我想写一个应用程序,它禁用键盘上的某些键时,它正在工作。 更具体地说,我对可能使应用程序失去焦点(如ALT + TAB,WinKey,Ctrl + Shift + Esc等)的键感兴趣。这需要与婴儿/动物在键盘上疯狂地b has。 🙂
我的第一个想法是使用SetWindowsHookEx() ,但是我遇到了一个问题。 因为我需要一个全局钩子,程序将不得不驻留在所有活动的应用程序中注入的.DLL中。 但.DLL可以是64位或32位,而不是两者。 而在64位系统上有两种types的应用程序。 那么我想我必须写两个hook .DLL副本 – 一个是32位的,另一个是64位的。 然后,我还必须启动应用程序的两个副本,因为应用程序首先必须在将DLL传递给SetWindowsHookEx()
之前加载DLL本身。
听起来相当笨拙和尴尬。 有没有更好的方法? 或者我误解了一些东西?
请注意,我仍然希望鼠标工作和“简单”的字母键,所以BlockInput()不会。
补充:我可以在.NET(C#/ VB)或C / C ++和WinAPI上开发。 我期望后者会更合适。
WH_KEYBOARD_LL运行在你的进程的上下文中(在Win9x上你将不得不坚持正常的钩子,但是你没有64位的问题)