gpt4 book ai didi

delphi - 防止 Windows 关闭

转载 作者:行者123 更新时间:2023-12-03 15:02:04 30 4
gpt4 key购买 nike

为了检测并防止关闭计算机,我使用了非常简单的程序。它只有一种形式和一个私有(private)过程,如下所示:

TForm3 = class(TForm)
private
procedure WMQueryEndSession(var Msg : TWMQueryEndSession) ;
message WM_QueryEndSession;
end;

和实现

procedure TForm3.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
Msg.Result := 0; //so I don't want to shutdown while my program is running
end;

我编译了Delphi 5和Delphi 2010。它们都检测关闭。但是当我在Delphi 2010中编译时;防止关闭后我的程序关闭。 (电脑不会关闭)

如何从两者中获得相同的结果?

最佳答案

编辑:更改为拦截 WM_ENDSESSION 而不是 WM_QUERYENDSESSION。

由于您无法直接更改 TApplication 的行为,因此您可以安装 TApplication 消息 Hook 来中和 WM_ENDSESSION 消息。

安装这样的钩子(Hook)非常简单,您只需在主窗体中添加类似于以下的方法并在 FormCreate 中注册该钩子(Hook)即可。

function TForm25.HookEndSession(var Message: TMessage): Boolean;
begin
result := false;
if Message.Msg = WM_ENDSESSION then begin
Message.Result := 0;
result := true;
end;
end;

procedure TForm25.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(HookEndSession);
end;

关于delphi - 防止 Windows 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3085267/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com