Dựa trên câu trả lời của David Tôi đã thực hiện một ví dụ nhỏ:
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.
nhờ. +1 và được chấp nhận – RBA
Chỉ cần một sự kiện FYI, sự kiện 'TApplication.OnActionExecute' là móc thứ hai xử lý một' TAction'. Nếu 'TAction' được liên kết với một' TActionList', sự kiện 'TActionList.OnExecute' sẽ có các dib đầu tiên trên' TAction'. Nếu trình xử lý sự kiện đó trả về True, sự kiện 'TApplication.OnActionExecute' KHÔNG được kích hoạt. –
@remy cảm ơn vì đã thêm –