Puedo configurar correctamente un gancho de Windows, pero me confunde la línea en MSDN que dice "Llamar a la función CallNextHookEx para encadenar al próximo procedimiento de gancho es opcional, pero es muy recomendable De lo contrario, otras aplicaciones que tienen ganchos instalados no recibirán notificaciones de gancho y pueden tener un comportamiento incorrecto como resultado. Debería llamar a CallNextHookEx a menos que sea absolutamente necesario evitar que otras aplicaciones vean la notificación ".Cómo usar correctamente SetWindowsHookEx & CallNextHookEx
Quiero ser un buen ciudadano de programación y llamar al próximo gancho. Pero, mi procedimiento de enlace es el siguiente:
LRESULT CALLBACK CBTProc(int code, WPARAM wp, LPARAM lp)
{
if (code != HCBT_CREATEWND)
{
// What do I do here? It's not the event I requested so how do I pass it on?
return 0;
}
// It's the code we want (create window)
CallNextHookEx(...);
...
}
Por lo tanto, lo que sucede en el procedimiento de enlace si el código no es el que me interesa? ¿Cómo llamo al siguiente gancho?
Editar: El problema principal es que un HHOOK se devuelve desde el SetWindowsHookEx, y que debe pasar a la función CallNextHookEx.
Actualización: Parece el parámetro gancho se ignora en las plataformas NT:
http://msdn.microsoft.com/en-us/library/ms644974.aspx
http://www.klenotic.com/pl/null_hhook/
Eso no funciona porque CallNextHookEx toma un parámetro HHOOK (devuelto por SetWindowsHookEx). –
Vaya, lo siento, actualizaré mi respuesta. – Charlie
Hmm, podrías encontrar algo ahí. Me perdí el truco sobre el parámetro "hhk" que se ignora en NT/XP/2003. Voy a darle una pequeña prueba ahora. –