VC 回调函数访问全局变量
发布网友
发布时间:2022-05-23 21:13
我来回答
共2个回答
热心网友
时间:2024-03-09 05:11
Windows消息分为队列消息和非队列消息,WH_GETMESSAGE不能取到非队列消息,用SendMessage发送的消息不经过队列,用PostMessage发送的消息被放入队列
你是否没有正确发送消息?
以下是 WH_GETMESSAGE 钩子一般使用方法:
SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)GetMsgProc,theApp.m_hInstance,dwThreadId);
LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
//
if (nCode==HC_ACTION)
{
MessageBox(NULL, _T("钩子回调函数"),_T("回调"), MB_OK);
}
return (CallNextHookEx(hHook, nCode, wParam, lParam));
}
热心网友
时间:2024-03-09 05:11
麻烦你把调用StartHook的函数也发出来看一下,感觉你是传入了一个临时的变量到pExePath中,然后保存了这个临时的变量导致的
一般来说,应该避免这种跨模块的指针传递和使用,因为这样就不知道这个指针最后到底有多少处地方在使用了
考虑到你是注入到自身的进程,建议如下:
你的全局变量ExePath改成用CString类型的,这样在调用StartHook的时候,在DLL内部重新构造一个字符串