vs2019键盘钩子_注册全局鼠标钩子后用鼠标点击窗口上最大化、最小化、关闭窗口界面卡死...

在vs2010 C# WinForm环境下,注册全局鼠标钩子后,点击窗口最大化、最小化、关闭按钮会导致界面卡死。问题与Windows主题有关,经典主题下正常,非经典主题会出现卡顿。尝试了添加消息循环、新建线程等方法,但问题未解决。可能是Windows API的bug,已在CSDN论坛和百度知道寻求帮助。
摘要由CSDN通过智能技术生成

开发环境:vs2010 C# WinForm windows7 x86    下载Demo

我的问题可以一句话描述:

注册全局鼠标钩子后用鼠标点击窗口上最大化、最小化、关闭窗口界面卡死

找到问题的关键点我也花了不少功夫,一点点地测试出来的。最后才发现是安装全局鼠标hook造成的。我现在把他单独拿出来作为demo,寻找解决办法.

UserActivityHook 这个类里面 506 行是执行安装全局hook的方法,其中第一个参数表示是否安装全局鼠标hook,第二个则是键盘的,如果只安装键盘不安装鼠标的则不会出现这个问题。

我在网站找了好多个论坛和博客,也有遇到类似问题的,有的是易语言,有的是.net,最后都是没解决。参考这个贴子 不过他是vc,也会出现这个问题,我想这是不是windows api的一个bug啊?

我想这个问题应该不是没有办法解决只是我太菜了,而且大家手头上没有demo,没有办法测试。所以这次我就把这个demo发上来,希望.net方面的高手能帮我测试一下,找出问题并解决它。毕竟这是个很典型的问题,小弟在此谢过!(我有200个园豆,就全部拿出来吧!)

有人说要添加消息循环,事实上不添加消息循环,hook根本没办法安装成功,我试过,所以不是这个问题。有人说是要新建线程,我也新建线程了,但问题依旧。其实我不是很懂消息循环,随便猜测的是不是消息循环就是在ui线程上工作啊,所以新建线程也没用,还是UI线程。

奇怪又有趣的是,如果不用鼠标用快捷键,按alt+空格 然后再按x ,这样最大化就不会卡。晕。。。

这个问题我也同时在CSDN论坛上提问,看看能不能解决吧!

刚才在百度知道上提问,发现百度知道也有人提问过这个问题:

不过他这是vc 我这是c#, 看来这应该不是.net本身的问题,而是windows api的问题!!是吗?

重大发现:我快疯了,发现了更奇怪的问题!

看到回帖好几位朋友说测试没有毛病,我就多找了几台同事电脑测试,有的行有的不行。最后终于发现规律:

1、凡是采用windows 经典主题的就没问题;

2、凡是不采用经典主题的都会多少出现卡的情况,winxp 卡的时候短点儿,但也会卡,win7非经典主题下卡的最为严重!这是什么毛病呢?

结贴说明:

这个问题最后还是没解决,等了两天也再没有新的答案。估计非常棘手,恐怕要微软的工程师才能解决。所以结贴吧,毕竟 Launcher 和 狼Robot 帮助我不停地测试。而且 Launcher 还教我一些技巧。在此对二位表示感谢。

最后做个问题总结:

还是用一句话吧:采用windows非经典主题时注册全局鼠标钩子后用鼠标点击窗口上最大化、最小化、关闭窗口界面卡死。

这应该是一个系统的bug或者api的bug,毕竟从互联网上可以看到VC、.net 还有易语言等多种开发环境都出现过这个问题,没有一个解决的。虽然我很菜,但是会继续关注解决办法,毕竟是一个不小的问题.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值