Example #1
0
  private void installMouseHook() {
    if (mouseCallback == null) {
      mouseCallback = new Callback(this, "MouseProc", 3);
      newAddress = mouseCallback.getAddress();
      if (newAddress == 0) SWT.error(SWT.ERROR_NO_MORE_CALLBACKS);
      int threadId = Extension.GetCurrentThreadId();
      oldAddress = Extension.SetWindowsHookEx(Win32.WH_MOUSE, newAddress, 0, threadId);
      shell.addDisposeListener(
          new DisposeListener() {

            public void widgetDisposed(DisposeEvent e) {
              if (mouseCallback != null) {
                Extension.UnhookWindowsHookEx(oldAddress);
                mouseCallback.dispose();
                mouseCallback = null;
                newAddress = 0;
              }
            }
          });
    }
  }