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

时间:2011-08-03 12:39:03

标签: java winapi jna

如何设置与WH_FOREGROUNDIDLE的Windows挂钩以及以下回调函数

DWORD CALLBACK ForegroundIdleProc( __in int code, DWORD wParam, LONG lParam );

我正在尝试检测线程/进程何时进入空闲状态。

我已使用以下函数获取threadProccessId

GetForegroundWindow -> GetWindowThreadProcessId.

2 个答案:

答案 0 :(得分: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);

编辑:添加了退货声明。

答案 1 :(得分:0)

扩展StdCallCallback而不是Callback,以便使用正确的调用约定来调用回调。在win32下,宏“CALLBACK”通常会解析为_stdcall。