SetWindowsHookEx返回0,GetLastWin32Error()也返回0

我面临的问题是,我无法得到由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(); } 

其实我想为我的应用程序创build一个低级别的键盘钩子,并根据SetWindowsHookEx参数说明我将设置hMod参数为null,如果我想设置当前的threadID并只捕获我的应用程序的keyevents。

任何人都可以确认GetCurrentThreadId()是正确的方法,以期望我的应用程序正在运行的ThreadID?

WH_KEYBOARD_LL钩子是全局的,你不能只为你的应用程序安装它。

Marshal.GetLastWin32Error()不工作,可能是因为您没有将SetLastError = true添加到SetWindowsHookEx DllImportAttribute