如何使用WH_FOREGROUNDIDLE
和以下回调函数设置windows钩子
DWORD CALLBACK ForegroundIdleProc( __in int code, DWORD wParam, LONG lParam );
我正在尝试检测线程/进程何时空闲。
我用以下函数得到了threadProccessId
:
GetForegroundWindow -> GetWindowThreadProcessId.
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);
编辑:添加返回语句
扩展StdCallCallback而不是Callback,以便使用正确的调用约定调用回调。在win32下,宏"CALLBACK"通常解析为_stdcall。