首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么小弟我的SetWindowsHookEx总是返回NULL

2012-01-15 
为什么我的SetWindowsHookEx总是返回NULL//.EXEDWORDdwThreadIdGetWindowThreadProcessId(m_hWnd,NULL)/

为什么我的SetWindowsHookEx总是返回NULL
//.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

[解决办法]
把这段代码 "hHook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)GetMsgProc,hmodDll,dwThreadId); "的hmodDll换成DLL的HANDLE试一下,动态库里HOOK要用动态库的句柄,不能够为空的好像。

热点排行