5 static HHOOK hMyHook = NULL;
9 BOOL WINAPI DllMain(HINSTANCE hInst, DWORD fdwReason, LPVOID lpvReserved)
11 if(fdwReason == DLL_PROCESS_ATTACH) {
18 LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
21 return CallNextHookEx(hMyHook, nCode, wParam, lParam);
23 else if(nCode == HC_ACTION) {
24 if(wParam == WM_LBUTTONDOWN) {
25 LPMOUSEHOOKSTRUCT lpMouseStruct = (LPMOUSEHOOKSTRUCT)lParam;
27 printf("clicked(left) x %d y %d\n", lpMouseStruct->pt.x, lpMouseStruct->pt.y);
28 return CallNextHookEx(hMyHook, nCode, wParam, lParam);
30 else if(wParam == WM_RBUTTONDOWN) {
31 LPMOUSEHOOKSTRUCT lpMouseStruct = (LPMOUSEHOOKSTRUCT)lParam;
33 printf("clicked(right) x %d y %d\n", lpMouseStruct->pt.x, lpMouseStruct->pt.y);
34 return CallNextHookEx(hMyHook, nCode, wParam, lParam);
36 else if(wParam == WM_MOUSEMOVE) {
37 LPMOUSEHOOKSTRUCT lpMouseStruct = (LPMOUSEHOOKSTRUCT)lParam;
39 printf("moving x %d y %d\n", lpMouseStruct->pt.x, lpMouseStruct->pt.y);
40 return CallNextHookEx(hMyHook, nCode, wParam, lParam);
43 return CallNextHookEx(hMyHook, nCode, wParam, lParam);
47 return CallNextHookEx(hMyHook, nCode, wParam, lParam);
51 __declspec(dllexport) __stdcall void SetHook(HINSTANCE hModule)
53 hMyHook = SetWindowsHookEx(WH_MOUSE_LL
61 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf, 0, NULL);
62 printf("%s", lpMsgBuf);
68 __declspec(dllexport) __stdcall void RemoveHook()
71 (void)UnhookWindowsHookEx(hMyHook);