#include #include "mousehook.h" static HHOOK s_hHook; static HANDLE s_hModule; static HANDLE s_hEvent; /*****************************************************/ BOOL WINAPI DllMain (HANDLE hDLL, DWORD dwReason, LPVOID lpReserved) { s_hModule = hDLL; switch (dwReason) { case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; case DLL_PROCESS_DETACH: break; } return TRUE; } /*****************************************************/ LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam ) { HANDLE hHookEvent = NULL; MOUSEHOOKSTRUCT * pmhs = (MOUSEHOOKSTRUCT *)lParam; static POINT s_pt; static int s_First = 1; if( s_First == 0 ) { if( s_pt.x != pmhs->pt.x || s_pt.y != pmhs->pt.y ) { // On signale l'evenement des que la souris bouge hHookEvent = OpenEvent( EVENT_ALL_ACCESS, FALSE, HOOKEVENTNAME ); if( hHookEvent ) { SetEvent( hHookEvent ); CloseHandle( hHookEvent ); } } } else { s_First = 0; } // Sauve les coordonnees de la souris s_pt = pmhs->pt; return CallNextHookEx( s_hHook, nCode, wParam, lParam ); } /*****************************************************/ int InstallCafardHook() { if( s_hHook ) UnInstallCafardHook(); s_hHook = SetWindowsHookEx( WH_MOUSE, MouseProc, s_hModule, 0 ); return (s_hHook!= NULL); } /*****************************************************/ void UnInstallCafardHook() { if( s_hHook ) UnhookWindowsHookEx(s_hHook); s_hHook = NULL; }