procedure AppMessageHandler(var Msg:TMsg; var Handled:Boolean);
//声明系统处理消息过程,响应Application的OnMessage事件的过程必须为TMessageEvent类型;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AppMessageHandler(var Msg:TMsg;var Handled:Boolean);
begin
if Msg.message=WM_QueryEndSession then
//如果收到的消息为关闭计算机的消息时,进行特别处理,因为只是一个例子,
//我只写出弹出对话框,大家可以根据自己程序的需要进行响应的处理;
begin
if messagedlg('shutdown?',mtconfirmation,mbyesnocancel,0)= mryes then
Handled:=true
else
Handled:=false;
end;
end;
end.
最后在程序的DPR文件中,创建窗体之后但在调用Application.Run前加入
Application.OnMessage:=Form1.AppMessageHandler;即可!
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caNone;
end;
继续我的问题:
Application 怎么捕捉不到?
procedure TMusicbox.ApplicationEventsMessage(var Msg: tagMSG;
var Handled: Boolean);
begin
if (msg.message = WM_QUERYENDSESSION) Or (msg.message = WM_ENDSESSION) then
self.Caption:='1';
end;