防止关闭windows

原创 2002年01月11日 17:38:00

     有时候程序在运行当中,不允许别的程序或人为的关闭计算机,除非应用程序知道windows将要退出,其实这样很简单,我们都知道系统将要关闭时,会向每一个程序发送WM_QUERYENDSESSION这条关机消息,只要我们的程序接受到此消息后,做恰当的处理即刻完成我们所需要的。

    处理windows消息有好几种,在这里我们利用Application的OnMessage事件,建立响应该事件的过程即可!如下面的例子:
unit unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    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;即可!

Windows防止网卡被关闭

1.写入注册表: ———————————————————————————————————————————————————————————————————————————— Windows Regist...
  • chordwang
  • chordwang
  • 2016年03月04日 22:57
  • 207

【C++码农】阻止屏保运行、显示器和系统待机

http://blog.csdn.net/magictong/article/details/6560634     最近看了下电脑管家里面修复漏洞时阻止系统进入待机模式的实现,其实很简单,...
  • CrackLibby
  • CrackLibby
  • 2015年08月26日 17:14
  • 2686

windows下面hook系统api实现禁止任务管理器关闭程序

为了保护我们的进程不被人随便强制关闭,我们需要一种机制来实现,网上大概有几种方式:1.写一个驱动程序,在驱动程序里面hook系统的api来实现,例如ssdt方式,等等。2.就是在应用层挂钩系统api,...
  • nanjun520
  • nanjun520
  • 2015年07月28日 18:15
  • 2257

如何避免不小心关掉web浏览器窗口

前段时间,一直在做web项目,总是出现一个问题:用户输入了一些内容后,不小心关掉了浏览器窗口,或是跳转到了其它页面,没有任何的提示,但是数据就没有了,其实跳转还好办,难就难在关闭浏览器时要给出一个提示...
  • linfenliang
  • linfenliang
  • 2014年09月18日 16:17
  • 785

WIN7打开或关闭Windows功能后空白问题解决

问题描述: 打开或关闭Windows功能界面,一片空白,问题如下: 解决方法: 参考百度出来的几个办法,都无法解决,可能在下的系统的注册表问题比较严重。。。。。。 参考另一个方...
  • ye1142262478
  • ye1142262478
  • 2016年11月15日 16:01
  • 6446

总结Windows程序的异常处理(dmp文件,防止崩溃)

总结一下上两篇文章, 一、如何像C#的try catch那样捕获Windows应用程序的所有异常。 首先要捕获的就是SEH异常,可以通过_set_se_translator把SEH异常转换成标准的C+...
  • atceedsun
  • atceedsun
  • 2015年05月20日 14:46
  • 1244

通过Windows任务管理器关闭运行的jar

遇到一个问题,本地运行一个名字为 TesJar-1.0.1.jar,使用“Ctrl  C”关闭该jar进程,该进程使用的是“8080”端口,此时,启动另外一个TestJarCopy.jar时,提示端口...
  • yhzhaohy
  • yhzhaohy
  • 2017年07月04日 15:11
  • 651

在windows 2003 sp2 或者 2008 rac环境中,可能会由于默认的SNP( Scalable Networking Pack)特性会导致 实例驱逐或者节点驱逐

在windows 2003 sp2 或者 windows 2008 rac环境中,可能会由于默认的SNP( Scalable Networking Pack)特性会导致 实例驱逐或者节点驱逐...
  • msdnchina
  • msdnchina
  • 2014年07月23日 07:12
  • 1392

Windows下建立TCP连接和终止TCP连接

1.请仔细解释建立TCP连接的三个步骤。 答:三次握手 ⑴ 请求端发送一个SYN报文段指明客户打算连接的服务器端口号,以及初始化、序号,SYN请求发送后,客户进入SYN_SENT状态。 ⑵ 服务器启动...
  • Echo_Ana
  • Echo_Ana
  • 2016年09月13日 13:10
  • 1612

DLL劫持防御策略

 DLL的搜索路径顺序:   ·  The directory from which the application loaded. ·  The system directory. ...
  • chence19871
  • chence19871
  • 2014年07月24日 16:22
  • 2731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:防止关闭windows
举报原因:
原因补充:

(最多只允许输入30个字)