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

时间:2012-05-15 10:40:24

标签: c# windows winapi

我遇到了问题,我无法获得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的正确方法吗?

1 个答案:

答案 0 :(得分:1)

WH_KEYBOARD_LL hook是全局的,您无法仅为您的应用安装它。

Marshal.GetLastWin32Error()无效,可能是因为您没有为SetLastError = true添加DllImportAttributeSetWindowsHookEx