Beispiel #1
0
  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);
  }