全局热键与隐藏窗口启动程序矛盾的解决记录

      需要实现的需求如下:

      程序启动分2种:正常带窗口(手动启动);静默不带窗口直接显示托盘(开机启动;自动更新后启动)

      遇到的难点及解决:

      由于程序用用到全局热键截屏(由RegisterHotKey...实现),发现最小化托盘后就有问题了。最后发现去掉"this.ShowInTaskbar=false;"就可以了。至于原因没有深究。但要是没有这句的话,开机带参数静默启动时会出现闪屏,而且更严重的是,自动更新是通过后台一个服务控制的,所以自动更新后启动前台程序需要session0穿透。通过这个方式启动要不显示界面,必须需要"this.ShowInTaskbar=false;",一个矛盾点就这样产生了,所以必须搞明白"this.ShowInTaskbar=false“这句到底做了什么。最后终于明白:原来是ShowInTaskbar值改变后程序的句柄会改变。之前注册热键的句柄就找不到了。所以就好办了,加上在静默启动中保留"this.ShowInTaskbar=false;",然后每次改变ShowInTaskbar值后都重新取消热键再注销热键。

      最后将所查相关资料遇到不错的文章留下来.

http://ly4cn.cnblogs.com/archive/2006/03/16/351205.html?Pending=true#Post

http://smalldust.cnblogs.com/archive/2006/03/29/361807.html

 

http://topic.csdn.net/u/20090422/17/87f283c1-eb65-4817-9988-b7f543f9217c.html
http://topic.csdn.net/u/20090616/09/6ffbba46-e1a3-4ba0-aef1-355e6ee3cc5b.html

 

posted on 2014-05-20 11:33  沉心  阅读(480)  评论(0编辑  收藏  举报

导航