He visto que mucha gente no sabe como utilizar SetWindowsHookEx, como se debe.Lo primero, saber que el mejor modo (de no ser el único) es usar DLL's.
El siguiente ejemplo, es un ejemplo modelo, que se podrá usar con todos los Hook's.
Código Delphi
[-]
library MSGFilter;
uses
{$R *.RES}
var Hook: HHook;
function G(nCode:Integer;wParam:Word;lParam:LongInt): LResult stdcall;export;var
Mensage: ^MSG; begin
G:= CallNextHookEx(Hook,nCode,WParam,LParam);
If nCode = MSGF_MENU Then begin
Mensage:= Ptr(LParam); If Mensage.message = WM_MENUSELECT Then
end;
end;
procedure Instalar;
begin
Hook := SetWindowsHookEX(WH_MSGFILTER,@G,hInstance,0);
end;
procedure Desinstalar;
begin
UnHookWindowsHookEx(Hook); end;
exports
Si, No;
begin
end.
Solo tienes que llamar a Instalar, y el procedimiento G, se ejecutará cada vez que haya un mensage a una ventana (para más información sobre los diferentes Hook's busca en MSDN o en la ayuda de Delphi SetWindowsHookEx).
Un saludo Strom!!!