zoukankan      html  css  js  c++  java
  • WPF触控程序开发(四)——MultiTouchVista_-_second_release_-_refresh_2的救赎

    起源

      Multitouch是一款可用于Win7模拟触摸屏幕的开源软件(关于它的使用介绍),最后一次更新是在11年5月份,我是13年初开始用的,当时开发了一款类似IPhone相册的图片展示触控程序,就是使用的这个模拟器,非常好用。最近大家看了我之前写的几篇博客,要求上代码,我把代码翻了出来,本打算上传,怕有什么bug贻笑大方,于是想再次运行调试一下,结果让我莫名其妙,Multitouch失效了,红点出来了,可是点屏幕上任何地方都没有反应,关键是这玩意一旦接管鼠标鼠标就失效了,再加上它自己失效,一般人还没法返回正常桌面了。打开画图,发现不管红点怎么画,都只会在一个固定的区域画,这时我还很淡定,把驱动卸了试试看呢,卸掉驱动重装,还是不起作用,上网搜各种资料,相当少,没有一个能解决的。于是,开始了一段奇妙的经历......

    假象

      我很喜欢分析问题,10个月前还好好的,这10个月内发生了什么让它失效了呢?我想不外乎这几个方面,硬件不兼容,软件冲突,中毒,被卫士搞了,系统配置被改......前不久系统重装了一次,当时为了升级SP1装VS2013,原系统一直升级不了就重装了。由于原始驱动没找到,就在网上东一枪西一炮地找了些驱动装上了,结果系统还算稳定,除了有个喇叭会间歇性罢工。我想会不会是驱动不兼容呢,那就麻烦了,也不知道是哪个驱动不兼容,再次重装?那可不是开玩笑的,开发人员的电脑,你懂的,动一动等于蜕层皮,而且重装了能不能解决我也没底,但是目前我只有这个法子了。那天正好是周末,歇在家里,一大早得爬起来脸也没洗,老婆在玩她自己的电脑,她的是台机,装的Win8.1,上网搜了下,这软件对于8.1貌似还不支持,我想拿她的重装Win7试试,于是就想说服她重装系统,结果没谈得下来,想想还是不要浪费时间了,抓紧重装吧。

      花了一上午把文件导出来了,11点左右开始重装的,找到了自带的驱动盘,费了些周折差不多下午2点多了,总算是把驱动都装上了,装完第一件事就是试试好用没,我还记得当时打开那个手掌时期待的眼神,结果可以用,当时我就断定,就是驱动的原因。好了,原因找到了,可以完美收工了,把该装的都装上,该打的补丁都打上,弄到晚上12点,所有的事情都做好了,开在那里用360打补丁,100多个,不等了,就去睡了。第二天醒来赶着去上班,打开电脑看了下,补丁应该都打完了(睡前开的是修补完自动关机模式,早上电脑已经关机了,开机后也没有看到更新画面),又试了下Multitouch依然可以用,放心得去上班了。后来在公司想找个文件,在家里的电脑里,就远程了家里的电脑,360提醒又有25个补丁要更新,我一向是会打的,打完之后还试了下,Multitouch没问题,就把电脑关了。

    疯了

       下班回家打开电脑,开机显示系统更新,心想应该是正常的,因为白天在公司又远程它打补丁了,更新完进入系统,奇迹发生了,Multitouch又失效了!这结果好像给了我当头一棒,打懵了。昨天搞了一天弄到晚上12点,都付之东流了。我想是不是更新之后把什么服务禁掉了所以才失效了,但是是哪个服务呢,在不知道是哪个服务的情况下,我只有把所有的服务都开起来!我敢打赌,为了一个软件把所有服务都开起来的人,这世上不会有很多。当时我已经快疯了,弄到晚上10点多,能开的服务都开起来了,依然无效。实在没辙,我想,要不就不要这个了吧,不是说VS2012开始已经支持触控程序开发了吗,我现在都装了13了,上网搜,找不到任何关于VS2013可以开发触控程序的资料。时间不知不觉又过了午夜了,当时整个人的状态很累,很不甘心,很无奈,脑子也很热,人脑子一热很多事都可以做的出来,于是我又一次重装了系统,原因是,我基本可以断定是补丁引起了失效,而且是在后来的25个补丁里面的某一个或者某些个,可惜当时没有截图,这就不说了,最重要的是,I will find you!我不可能就这么算了,我一定要把你揪出来!

    计划

       重装好系统之后已是凌晨两点,本想继续弄,想想还是让身体歇会,让脑子清醒一下,由于过了睡点,躺床上到4点半还没睡着,脑子在梳理这个事情的对策,它不是有100多个补丁嘛,我逐个给你打上,看打了哪个引起你失效,不行,有的补丁得重启电脑生效,一个一个来太慢了,10个10个来,顶多来个10来次就可以分析出来。那如果某批10个装了引起了失效,如何确定10个中是哪个呢,对,弄个一键还原,失效后还原回去,省去重装系统的麻烦,可以按补丁大小排下序,小补丁安装时间短,一批可以定为20个,大补丁安装慢,一批可以定为5个...肚子饿得蛙声一片,起来啃了个小面包对付着睡了。

       次日下班回来,我按照我的计划,开始寻找引起失效的补丁,首先找了个一键还原的软件,备份了系统,我要试验一键还原之后的效果怎么样,好家伙备份了40分钟。备份好了之后,不经意间,发现360打的补丁是可以卸载的,我仿佛嗅到了一条捷径,既然补丁可以卸载,那我就有机会回退到某个时刻,卸总比装来得快吧。可惜补丁管理里的列表没法导出来,于是我按补丁编号从小到达排了下序,每11个一屏截了图保存,每卸11个重启一下电脑,看Multitouch有没有生效。一开始我还是信心满满,越到后来我就越心虚,运气很不好卸了9次还是没生效。虽然我也一直给自己打气,要自信,直到最后一次的时候,我彻底奔溃了,最后一批,卸完了,还没重启电脑,我想,可能我这个思路是行不通的,即使卸掉了补丁,系统的配置可能还是没法回退,既然如此,只能用昨晚躺床上想出来的对策了。

    重生

       当时已经晚上9点多,不算太晚,就打算重装了,重启电脑,结果奇迹又一次发生了,Multitouch生效了!这感觉应该就是起死回生吧。这巨大的冲击我脑子里立马闪过一句话,不到最后一刻千万不能放弃!事后想想我当时应该按编号降序排的,那样应该很快就能找到。不多久,我就找到了那个补丁,代号是KB2993651,在SP1系统后没有打任何补丁的情况下,打这个补丁就会使Multitouch失效,卸掉之后就生效,那么,我就有充分的理由相信,就是这个补丁的原因。

       事后,老婆问我折腾了这么久有何感想,我说:“我估计就连开发这玩意儿的人都想不到,自己竟然是被微软的这个补丁干掉的吧。”结果她的一句话让我当场就笑了,她说:“我妈还偷偷跟我商量,要不重新给你买个电脑吧。”(这几天丈母娘在我家带闺女,天天看我搞那么晚睡估计心疼了)

    真相

      今天到单位之后用单位的电脑试,卸了那个补丁之后还是不生效,还需要卸掉一个补丁,代号是KB2973201(如何发现的大家可以加群交流~),这俩补丁卸了之后Multitouch就可以使用了。360漏洞修复里设置关闭弹窗提醒,以后开机就不会提示了。

    下图是这俩补丁的截图:

     
    用360卸掉就可以了。
     
      到此为止这就算完美结束了,总结一下感受:
    1. 考虑事情要周全,万一发生什么,要提前想好对策
    2. 自信要有基础,盲目自信要吃大亏
    3. 成功往往离失败只有一步之遥,不到最后一刻千万不能放弃
      随后我会把一些好玩的代码整理下放到群共享里,有兴趣的可以一起交流下。
  • 相关阅读:
    ZOJ 3765 Lights (zju March I)伸展树Splay
    UVA 11922 伸展树Splay 第一题
    UVALive 4794 Sharing Chocolate DP
    ZOJ 3757 Alice and Bod 模拟
    UVALive 3983 捡垃圾的机器人 DP
    UVA 10891 SUM游戏 DP
    poj 1328 Radar Installatio【贪心】
    poj 3264 Balanced Lineup【RMQ-ST查询区间最大最小值之差 +模板应用】
    【转】RMQ-ST算法详解
    poj 3083 Children of the Candy Corn 【条件约束dfs搜索 + bfs搜索】【复习搜索题目一定要看这道题目】
  • 原文地址:https://www.cnblogs.com/zoexia/p/4026075.html
Copyright © 2011-2022 走看看