@Override public void run() { Logger.debug("run()"); try { hHook = USER32_INSTANCE.SetWindowsHookEx( WinUser.WH_MOUSE_LL, WindowsMouseHook.this, Kernel32.INSTANCE.GetModuleHandle(null), 0); MSG msg = new MSG(); while ((USER32_INSTANCE.GetMessage(msg, null, 0, 0)) != 0) { // This code is never reached USER32_INSTANCE.TranslateMessage(msg); USER32_INSTANCE.DispatchMessage(msg); if (getHook() == null) { break; } } } catch (Exception e) { Logger.error("Mouse hook failure", e); } Logger.debug("mouse hook runnable exits"); }
public void run() { lib = User32.INSTANCE; HMODULE hMod = Kernel32.INSTANCE.GetModuleHandle(null); keyboardHook = new LowLevelKeyboardProc() { public LRESULT callback(int nCode, WPARAM wParam, KBDLLHOOKSTRUCT info) { if (nCode >= 0) { // To unhook press 'esc' key if (info.vkCode == 0x1B) { User32.INSTANCE.UnhookWindowsHookEx(hhk); } switch (info.vkCode) { case 0x5B: System.err.println("l win"); return new LRESULT(1); case 0x5C: System.err.println("r win"); return new LRESULT(1); case 0xA2: System.err.println("l ctrl"); return new LRESULT(1); case 0xA3: System.err.println("r ctrl"); return new LRESULT(1); case 0xA4: System.err.println("l alt"); return new LRESULT(1); case 0xA5: System.err.println("r alt"); return new LRESULT(1); default: System.out.println("Key Pressed : " + info.vkCode); // do nothing } } return lib.CallNextHookEx(hhk, nCode, wParam, info.getPointer()); } }; hhk = lib.SetWindowsHookEx(13, keyboardHook, hMod, 0); // This bit never returns from GetMessage int result; MSG msg = new MSG(); while ((result = lib.GetMessage(msg, null, 0, 0)) != 0) { if (result == -1) { break; } else { lib.TranslateMessage(msg); lib.DispatchMessage(msg); } } lib.UnhookWindowsHookEx(hhk); }