SetWindowsHookEx 返回 0,GetLastWin32Error() 也返回 0
本文关键字:返回 SetWindowsHookEx GetLastWin32Error | 更新日期: 2023-09-27 18:34:16
我遇到了一个问题,我的我无法获得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 参数描述,如果我想设置当前线程 ID 并仅捕获应用程序的键事件,我将 hMod 参数设置为 null。
任何人都可以确认 GetCurrentThreadId() 是需要运行我的应用程序的 ThreadID 的正确方法吗?
WH_KEYBOARD_LL
钩子是全局的,您不能仅为您的应用程序安装它。
Marshal.GetLastWin32Error()
不起作用可能是因为您没有将SetLastError = true
添加到DllImportAttribute
中以进行SetWindowsHookEx
。