如何使用Java本机访问(JNA)映射回调函数

pak*_*ick 5 java winapi jna

如何设置Windows钩子WH_FOREGROUNDIDLE和以下回调函数

DWORD CALLBACK ForegroundIdleProc( __in int code, DWORD wParam, LONG lParam );
Run Code Online (Sandbox Code Playgroud)

我试图检测线程/进程何时进入空闲状态.

threadProccessId通过使用以下功能获得了:

GetForegroundWindow -> GetWindowThreadProcessId.
Run Code Online (Sandbox Code Playgroud)

Abh*_*ith 0

 public static interface ForegroundIdleProc extends Callback(){
   int invoke(int code, int wParam , NativeLong lParam);
 }

 /*....Usage....*/
 ForegroundIdleProc proc = new ForegroundIdleProc(){
   int invoke(int code, int wParam , NativeLong lParam){
      /* Handle callback */
       /*Make sure you define this function first.*/
       return NativeLibrary.Instance.CallNextHookEx(NULL , code , wParam , lParam);
   } 
 }

 NativeLibrary.Instance.SetWindowsHookEx(WH_FOREGROUNDIDLE , proc , etc etc);
Run Code Online (Sandbox Code Playgroud)

编辑:添加了返回语句。