后台监控软件在关机时提示"立即结束",如何解决??? ( 积分: 200 )

  • 主题发起人 主题发起人 zjhare
  • 开始时间 开始时间
Z

zjhare

Unregistered / Unconfirmed
GUEST, unregistred user!
后台监控软件在关机时提示"立即结束",如何解决??

我用sleep(3000),来延时的!!
 
你需要处理关机事件
 
关机时,系统会给每个应用程序发WM_CLOSE的消息,你可以在这个消息里面判断。
 
TForm1 = class(TForm)
private
procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
end;

procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
if MessageDlg('是否立即结束?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then
Msg.Result := 0 //不关机
else
Msg.Result := 1;//关机
end;
end.
 
我的程序是无窗体程序,
用procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
提示:message 什么错误,
直接判断消息时,得不到WM_QUERYENDSESSION消息,为什么??

我的源码:
//响应关机消息
procedure WMQueryEndSession(var Mes: TMessage);
begin
if (Mes.Msg = WM_QUERYENDSESSION) or (Mes.Msg = WM_DESTROY) or
(Mes.Msg = WM_CLOSE) or (Mes.Msg = WM_QUIT) then
begin
// inherited ;
showmessage('要关机了!');
mes.result:=1;
halt(0);
end;
end;
 
procedure QueryEndSession(var Msg:TMessage);Message WM_QueryEndSession;

procedure QueryEndSession(var Msg:TMessage);
begin
ShowMessaage('提示:系统关机。');
Msg.Result:=1;
end;
 
[:D]是木马程序!
 
楼主的程序有没有监听消息的隐藏窗口呢?可以把这段代码放在隐藏窗口的WndProc函数中处理。
 
是不是没有窗体就不能监听消息啊??
 
后退
顶部