2010-03-18 47 views
1

我的硬件有问题,不时它发送“的keydown”,后跟一个“KEYUP”事件:拦截和Windows忽略键盘事件7 32位

的keydown:无LButton,OemClear 255

KEYUP:无LButton,OemClear 255

的keydown:无LButton,OemClear 255

KEYUP:无LButton,OemClear 255

它是这样的,每1或2秒,永远,在Windows中。

通常,它不会影响大多数应用程序,因为此键不可打印。我认为这是一个特殊的功能键,就像媒体键或其他东西。它什么都不做。

但是,在某些监听到keydown和keyup的应用程序中,我收到意外的行为。

问题:有没有办法拦截在Windows中这2个键盘事件(对于Windows本身的所有应用程序&),使OS忽略它们?

这对我来说真的很重要,如果你能想到任何解决方案,我会永远感激。

回答

1

您可以编写一个小应用程序,使用RegisterHotKey将该按键注册为系统范围的热键。然后,Windows会将该按键转换为WM_HOTKEY消息到您的应用程序窗口。

这会导致您的应用程序每秒钟运行一次代码,这并不是很理想,但它可能比替代方案更好。

窗口句柄需要属于您的应用程序,但它不一定是可见的或非常大的。热键是全球性的,所以它有点像在键盘和其他应用程序之间安装钩子。

+0

谢谢,听起来不错。它适用于所有线程和应用程序吗?我知道我需要传递一个HWND参数。那是什么窗口句柄? – Sg2010 2010-03-18 22:51:31

+1

您的评论让我找到了解决方案。我使用这篇文章:http://www.codeproject.com/KB/cs/globalhook.aspx它挂钩到全局KeyDown和KeyUp事件,并在事件处理程序中,我忽略不需要的事件。 – Sg2010 2010-03-19 01:08:15