SetWindowsHookEx 拒绝访问的诡异问题(全局成功,局部失败)
SetHookEx函数在一个独立的dll中,作为dll的导出函数。
HHOOK SetHookEx(DWORD ThreadId)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HHOOK hHook = ::SetWindowsHookEx(WH_GETMESSAGE,HookProc,hInst,ThreadId);
if (hHook == NULL)
{
DWORD dwError = GetLastError();
CString str;
str.Format(_T("dwError:%d\r\n"),dwError);
LOG_ERROR(str);
}
return hHook;
}
ThreadId 如果传入0(全局钩子) 则返回正常
如果是某个线程ID,返回空, 错误码:dwError:5 拒绝访问
这是什么情况,为什么线程钩子会失败呢