in base alla risposta di David Ho fatto un piccolo esempio:
program Project1;
uses
ExceptionLog,
Forms,
Unit2 in 'Unit2.pas' {Form2},
AppEvnts,
Classes,
Windows,
SysUtils;
{$R *.res}
type TAppEventsHack = class
procedure onAppEvtExec(Action:TBasicAction;var Handled:Boolean);
end;
var aEvHack : TAppEventsHack;
aAppEvents : TApplicationEvents;
{ TAppEventsHack }
procedure TAppEventsHack.onAppEvtExec(Action: TBasicAction;
var Handled: Boolean);
begin
OutputDebugString(PAnsiChar(Action.Name));
Handled := False;
end;
begin
Application.Initialize;
try
aEvHack := TAppEventsHack.Create;
aAppEvents := TApplicationEvents.Create(nil);
aAppEvents.OnActionExecute := aEvHack.onAppEvtExec;
Application.CreateForm(TForm2, Form2);
Application.Run;
finally
freeandnil(aEvHack);
freeandnil(aAppEvents);
end;
end.
grazie. +1 e accettato – RBA
Solo un FYI, l'evento 'TApplication.OnActionExecute' è il secondo hook che elabora un' TAction'. Se 'TAction' è associato a' TActionList', l'evento 'TActionList.OnExecute' ottiene i primi dibs sul' TAction'. Se quel gestore eventi restituisce True, l'evento 'TApplication.OnActionExecute' NON viene attivato. –
@remy grazie per averlo aggiunto –