Please help me to solve a problem about global mouse hook
-
I created a dll file like this :
HHOOK MyHook;
HINSTANCE MyInstance;
LRESULT CALLBACK MyMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam);
extern "C" __declspec(dllexport) void Hook();
extern "C" __declspec(dllexport) void Unhook();//I initialized MyInstance
BOOL CMouseHook1App::InitInstance()
{
CWinApp::InitInstance();
MyHook = NULL;
MyInstance = this->m_hInstance;
return TRUE;
}void Hook()
{
if(MyHook == NULL && MyInstance != NULL )
{
MyHook = SetWindowsHookEx(WH_MOUSE,MyMouseHookProc,MyInstance, 0);
if(MyHook!= NULL)
MessageBox(NULL,_T(" HOOKED "), _T(""),0);
}
else
MessageBox(NULL,L" Not Hooked", L"",0);}
LRESULT CALLBACK MyMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode <0)
{
CallNextHookEx(MyHook,nCode,wParam,lParam);
return 0;
}if(wParam == WM_LBUTTONDOWN || wParam == WM_NCLBUTTONDOWN)
{
MessageBox(NULL,_T("OK"),_T("Test"),MB_OK);
PostMessage(hWndApp,WM_LBUTTONDOWN,0,0);
}return CallNextHookEx(MyHook,nCode,wParam,lParam);
}
But in my app, when I use the function Hook(), it doesn't work at all. Did I do anything wrong? Someone plz help me
-
I created a dll file like this :
HHOOK MyHook;
HINSTANCE MyInstance;
LRESULT CALLBACK MyMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam);
extern "C" __declspec(dllexport) void Hook();
extern "C" __declspec(dllexport) void Unhook();//I initialized MyInstance
BOOL CMouseHook1App::InitInstance()
{
CWinApp::InitInstance();
MyHook = NULL;
MyInstance = this->m_hInstance;
return TRUE;
}void Hook()
{
if(MyHook == NULL && MyInstance != NULL )
{
MyHook = SetWindowsHookEx(WH_MOUSE,MyMouseHookProc,MyInstance, 0);
if(MyHook!= NULL)
MessageBox(NULL,_T(" HOOKED "), _T(""),0);
}
else
MessageBox(NULL,L" Not Hooked", L"",0);}
LRESULT CALLBACK MyMouseHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode <0)
{
CallNextHookEx(MyHook,nCode,wParam,lParam);
return 0;
}if(wParam == WM_LBUTTONDOWN || wParam == WM_NCLBUTTONDOWN)
{
MessageBox(NULL,_T("OK"),_T("Test"),MB_OK);
PostMessage(hWndApp,WM_LBUTTONDOWN,0,0);
}return CallNextHookEx(MyHook,nCode,wParam,lParam);
}
But in my app, when I use the function Hook(), it doesn't work at all. Did I do anything wrong? Someone plz help me
You need to declare the HHOOK MyHook; in a shared data section. So you need to first create a data section, declare the HHOOK in that data section and then make that section shared. Look at my article at http://www.codeproject.com/KB/DLL/ParkMouse.aspx[^]
« Superman »