我这样截取其他应用程序的鼠标单击事件为什么不对,或者怎样才是对的
我想在应用程序中检测所有程序和系统的鼠标的左键单击,我把钩子函数放到了dll中,代码如下.
extern "C" BOOL PASCAL EXPORT killit()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
Hook = (HHOOK)SetWindowsHookEx(WH_MOUSE,MouseProc,theApp.m_hInstance,0);
if(Hook == NULL)AfxMessageBox("fail to install hook");
return 1;
}
LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lParam )
{
if(nCode < 0)
{ AfxMessageBox("nCode < 0");
return CallNextHookEx(Hook,nCode,wParam,lParam);
}
else if (nCode == HC_ACTION)
{
//AfxMessageBox("nCode == HC_ACTION");
if(wParam == WM_LBUTTONDOWN)
{
//AfxMessageBox(" wParam == LBUTTONDOWN");
ClickSign = 1;
return CallNextHookEx(Hook,nCode,wParam,lParam);
}
/*if(wParam == WM_MOUSEMOVE)
{
CGetmouseDlg::possend();
}*/
}
else if (nCode == HC_NOREMOVE)
{
//AfxMessageBox("nCode == HC_NOREMOVE");
return CallNextHookEx(Hook,nCode,wParam,lParam);
}
return 1;
}
extern "C" BOOL PASCAL EXPORT stopkillit()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
BOOL hallo = UnhookWindowsHookEx(Hook);
if(hallo == 0)AfxMessageBox("ERROR IN UNLOAK HOOK");
int eoorr = GetLastError();
return 1;
}
extern "C" int PASCAL EXPORT csignal()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
int Click ;
Click = ClickSign ;
ClickSign = 0;
return Click;
}
请教各位大侠,为什么只有在主程序的窗口中单击的时候才能检测到.
怎样检测全局的鼠标单击.