Tim*_*mwi 5 c# windows windows-vista
我正在尝试编写一个应用程序,只要按下Shift键就会响应,无论当前哪个应用程序都有焦点.
我尝试使用SetWindowsHookEx()和使用GetKeyboardState(),但这两个只在应用程序的窗口具有焦点时才起作用.我需要它在全球范围内工作.
我该怎么做呢?
提供的答案都没有帮助我解决我的问题,但我自己找到了答案.这里是.
使用SetWindowsHookEx()with WH_KEYBOARD_LL是正确的方法.但是,其他参数SetWindowsHookEx()不直观:
dwThreadId需要为0.hMod需要指向某个DLL.我用过
User32,这是一个始终加载的DLL,并且所有进程都使用GUI.我从CodeProject的帖子中得到了这个想法.因此,代码看起来有点像这样:
instance = LoadLibrary("User32");
hhook = SetWindowsHookEx(WH_KEYBOARD_LL, hookFunction, instance, 0);
Run Code Online (Sandbox Code Playgroud)
关于倒数第二个参数的文档不清楚.它说:
如果挂钩过程位于与当前进程关联的代码中,则必须将hMod参数设置为NULL [...].
它并未声明这仅适用于某些类型的钩子,而不适用于WH_KEYBOARD_LL和WH_MOUSE_LL.
| 归档时间: |
|
| 查看次数: |
1094 次 |
| 最近记录: |