//.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
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
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货