钩子DLL中的全局变量问题
HWND hProgramWnd; //加载本Hook的应用程序的窗口句柄
LRESULT __stdcall WindProc(int nCode,WPARAM wParam,LPARAM lParam)
{
CWPSTRUCT *pCwp = NULL;
HWND hWnd = NULL;
char strClassName[128];
char strTitle[128];
if(nCode < 0)
{
return CallNextHookEx(hNextHookWindProc, nCode, wParam, lParam);
}
if(NULL != lParam)
{
pCwp =(CWPSTRUCT *)lParam;
if(WM_SHOWWINDOW == pCwp->message || WM_ACTIVATE == pCwp->message)
{
SendMessage(hProgramWnd,WM_COPYDATA,0,pCwp->wParam);//应用程序无法收到此消息
}
}
return CallNextHookEx(hNextHookWindProc, nCode, wParam, lParam);
}
bool __stdcall EnableKeyHook(HWND hWnd)//安装钩子的导出函数
{
hProgramWnd=hWnd;//把此句柄保存到全局变量中
if(hNextHookWindProc == 0)
hNextHookWindProc = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)WindProc, hInst, 0);
return(hNextHookWindProc != 0)&&(hNextHookMsgProc!=0);
}
为什么无法将加载应用程序的句柄保存下来,也即加载程序无法收到钩子发过来的消息?是不是全局变量 hProgramWnd的问题,请知情者帮忙!