为什么我的SetWindowsHookEx总是返回NULL
自由的风 2007-02-06 04:56:50 //.EXE
DWORD dwThreadId = GetWindowThreadProcessId(m_hWnd,NULL);//获得自身进程ID
InstallHook(TRUE,dwThreadId);
//.DLL
#pragma data_seg("Shared")
HMODULE hmodDll=NULL;
HHOOK hHook=NULL;
#pragma data_seg()
void __declspec(dllexport) WINAPI InstallHook(BOOL IsHook,DWORD dwThreadId)
{
hHook =NULL;
if(IsHook)
{
hHook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetMsgProc,hmodDll,dwThreadId);
DWORD dwErr = GetLastError();
//GetProcAddress(GetModuleHandle("GDI32.dll"),"ExtTextOutA"):取得要钩的函数在所在dll中的地址
HookAllAPI(_T("GDI32.dll"),GetProcAddress(GetModuleHandle(_T("GDI32.dll")), "TextOutW"),(PROC)&H_TextOutW,NULL);
HookAllAPI(_T("GDI32.dll"),GetProcAddress(GetModuleHandle(_T("GDI32.dll")), "TextOutA"),(PROC)&H_TextOutA,NULL);
}
}
============================================
每次跟踪到这里,SetWindowsHookEx都返回的NULL(unused = CXX0030: 错误: 无法计算表达式的值)
dwErr 的值为0