📄 060404_05.htm
字号:
<html>
<head>
<link REL="stylesheet" HREF="/style.css" TYPE="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>计算机世界日报:
用Delphi实现禁止用户关闭Window9X
</title>
<!--***********-->
</head>
<body bgcolor="#FFFFFF" >
<p><br>
<font color="#b904e8"><b><em><a href="class.htm">返回</a></em></b></font>
<center>
<font color="#0000c0"><h2>
用Delphi实现禁止用户关闭Window9X
</h2></font>
<h3>
山东济宁鲁抗医药集团
<br> 许振华
</h3>
</center>
<font color="#ffffff">----</font>
在软件的安装或演示操作等过程中,如果关闭WIN9X会产生严重的后果,就必须禁
止用户关闭WIN9X,直到完成相应的操作,那么如何才能禁止用户关闭WIN9X呢?其实
很简单,当用户关闭WIN9X时, 系统会发送给各应用程序一个消息wm_queryendsession,
告诉各应用程序要关机了,如果反馈回来的消息值为0,那么WIN9X就不能关机。因此,
截获wm_queryendsession,并反馈回0,大功就告成了,下面是一个例子。
<p><font color="#ffffff">----</font>
在下面这个例子中,我们在窗体中加入一个复选框(CHECKBOX),如果用户不选
中它,则无法关闭WIN9X,如果选中它,才可以关闭。在实际应用中,用户可首先设定
一个布尔变量,当所需的作操都完成后,使其值变化,当程序检测到这个变量的值变
化后才允许关闭WIN9X。为方便大家使用,给出窗体的完整代码(很短):
<pre>
unit Unit1;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
private
{ Private declarations }
//声明拦截WM_QueryEndSession消息的过程
procedure WMQueryEndSession(var Msg: TMessage);
message WM_QueryEndSession;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMQueryEndSession
(var Msg: TMessage);
begin
if CheckBox1.Checked then Msg.Result := 1
else Msg.Result := 0;
end;
end.
</pre>
<p><font color="#ffffff">----</font>
运行上面的程序,首先不要选中复选框,在WIN9X的“开始”菜单中选择“关闭
系统\关闭计算机或重新启动计算机”,你将发现屏幕闪烁了一下又恢复了正常;将
复选框选中,再关闭计算机,这下就可如愿了。
<p><font color="#ffffff">----</font>
程序调试环境:DELPHI 4,中文WIN98。
<p align="right"><small><em>中国计算机世界出版服务公司版权所有</em></small>
<br>
</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -