我想编写一个应用程序,在它工作时禁用键盘上的某些键。更具体地说,我对可能使应用程序松散焦点的键感兴趣(如ALT + TAB,WinKey,Ctrl + Shift + Esc等)。这需要与婴儿/动物在键盘上疯狂抨击有关。 :)
我的第一个想法是使用SetWindowsHookEx(),但是遇到了问题。由于我需要一个全局钩子,因此该过程必须驻留在.DLL中,该DLL将被注入所有活动的应用程序中。但是.DLL可以是64位或32位,而不是两者。在64位系统上,有两种类型的应用程序。我想那时我必须写两个钩子.DLL的副本 - 一个用于32位,另一个用于64位。然后我还必须启动应用程序的两个副本,因为应用程序首先必须加载DLL本身才能将其传递给SetWindowsHookEx()
。
听起来很笨拙和尴尬。还有更好的方法吗?或许我误解了什么?
请注意,我仍然希望鼠标工作,并且“简单”的字母键也是如此,因此BlockInput()不会这样做。
已添加:我可以在.NET(C#/ VB)或C / C ++和WinAPI上进行开发。我希望后者更合适。
答案 0 :(得分:1)
WH_KEYBOARD_LL在你的进程的上下文中运行(在Win9x上,你将不得不坚持正常的钩子,但那里没有64位问题)