syn*_*cis 4 .net c# security visual-studio-2010
我使用了Stephen Toubs版本的全局键盘钩子,在WIN 7环境中使用它.
它工作正常,然后它就停止接收击键.
我在regedit中增加了超时值,但在一段时间后它仍然断开连接.
问题是,如何检测它是否已断开连接以及如何将挂钩设置为再次激活?
没有办法知道(来自msdn):
钩子过程应该在比以下注册表项中的LowLevelHooksTimeout值中指定的数据条目更短的时间内处理消息:HKEY_CURRENT_USER\Control Panel\Desktop
如果挂钩过程超时,系统会将消息传递给下一个挂钩.但是,在Windows 7及更高版本中,无需调用即可静默删除挂钩.应用程序无法知道钩子是否被移除.
解决此问题的一种方法是保留收到的最后一条消息的时间戳,并使用后台计时器在从上一条消息过去一段时间后添加新的挂钩.
此外,为了最大限度地减少这种情况,您的钩子处理方法应该只收集最少的所需信息,并将数据的实际处理留给另一个线程.
| 归档时间: |
|
| 查看次数: |
837 次 |
| 最近记录: |