2011-08-03 14 views
5

¿Cómo puedo configurar las ventanas gancho con WH_FOREGROUNDIDLE y la siguiente llamada de vuelta Funcionescómo asignar la función de devolución de llamada con Java acceso nativo (JNA)

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

Estoy tratando de detectar cuando un tema/proceso entra en inactividad.

que han obtenido la threadProccessId mediante el uso de las siguientes funciones:

GetForegroundWindow -> GetWindowThreadProcessId. 

Respuesta

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); 

EDIT: Se ha añadido una instrucción de retorno.

+0

¿Qué debo devolver? cuando anulo el botón invocar, me pide que devuelva algo. msdn dice que se debe llamar a CallNextHookEx cuando ForegroundIdleProc devuelve 0. Estoy un poco confundido aquí. – paktrick

+0

Según MSDN 'Si el código es menor que cero, el procedimiento de enlace debe devolver el valor devuelto por CallNextHookEx. Si el código es mayor o igual que cero, se recomienda encarecidamente que llame a CallNextHookEx y devuelva el valor que devuelve; de lo contrario, otras aplicaciones que tengan instalados los enlaces WH_FOREGROUNDIDLE no recibirán notificaciones de enlace y pueden tener un comportamiento incorrecto como resultado. Si el procedimiento de enlace no llama a CallNextHookEx, el valor de retorno debe ser cero. – Abhijith

0

Extienda StdCallCallback en lugar de devolución de llamada para obtener la devolución de llamada llamada con la convención de llamada correcta. En win32, la macro "CALLBACK" generalmente se resuelve en _stdcall.

Cuestiones relacionadas