我遇到了问题,我无法获得SetWindowsHookEx返回的有效hookID,并且GetLastWin32Error()也返回0。我写了下面的代码:
_LowLevelhookID = SetWindowsHookEx((int)HookType.WH_KEYBOARD_LL, LowLevelKeyboardHookHandler, IntPtr.Zero, GetCurrentThreadId());
int errorCode = -1;
if(_LowLevelhookID == (IntPtr)0)
{
errorCode = Marshal.GetLastWin32Error();
}
实际上我只想为我的应用程序创建一个低级别的键盘钩子,根据SetWindowsHookEx参数说明,如果我想设置当前的threadID并仅捕获我的应用程序的键事件,我应该将hMod参数设置为null。 p>
任何人都可以确认GetCurrentThreadId()是需要运行我的应用程序的ThreadID的正确方法吗?
答案 0 :(得分:1)
WH_KEYBOARD_LL
hook是全局的,您无法仅为您的应用安装它。
Marshal.GetLastWin32Error()
无效,可能是因为您没有为SetLastError = true
添加DllImportAttribute
到SetWindowsHookEx
。