金桥科普  
设为首页 关于我们 邮箱登录
科普聚焦时代科技科普生活科学技术自然科学航空航天科技博览历史考古电脑IT
您现在的位置: 首页 >> 科普频道 >> 技巧实践 >> 文章详情
用Delphi控制Windows的关闭功能

胡勇智 新浪网 2001-10-22


  我们经常会遇到在安装驱动程序或应用程序时,对系统配置进行了修改而必须重新启动Windows才能使设置生效,这时往往会弹出一个提示用户是否重新启动Windows的对话框。但有时又不希望关闭Windows,例如:一个程序正在工作,数据尚未保存,而另一个程序执行了“关闭Windows”的操作(如“网络蚂蚁”的定时关机功能),就会影响用户工作甚至造成数据丢失。此时,我们可在程序中设置防止关闭Windows的代码,只要本程序在运行中关闭Windows时,都将弹出对话框要求用户确认。

  对于以上功能,我们完全可以通过编程来实现,下面就以Delphi编程来完成。

  关闭(或重启)Windows

  要关闭Windows,可利用API函数ExitWindowsEx(),它能够实现“注销当前用户”、“关闭Windows”以及“关闭Windows并重启”等功能,具体格式和用法如下:

  ExitWindowsEx(关闭类型参数,系统保留参数);

  其中,系统保留参数无特定意义,一般写0即可;关闭类型可以是以下几种:

  EWX_FORCE:强制关闭,Windows不会发送任何消息给正运行的程序,这可能导致数据丢失;

  EWX_LOGOFF:关闭所有正在运行的程序,注销当前用户并重新登录;

  EWX_POWEROFF:关闭Windows并关机,当然,系统必须支持电源管理;

  EWX_REBOOT:关闭Windows并重新启动;

  EWX_SHUTDOWN:关闭Windows,缓冲区内的数据将被写入磁盘。

  我们来看一个实例,首先新建一窗体,在上面放置一组单选钮,命名为rgExit,共三个选项:注销当前用户并重新登录;关闭Windows并重新启动;关闭Windows。再放置两个按钮,Botton1用于确认,Botton2用于取消。代码如下:

  Implementation

  {$r *.dfm}

  Procedure tform1.button1click(sender: tobject);

  Begin

  case rgexit.itemindex of

  0: exitwindowsex(ewx_

  logoff,0); //注销当前用户并重新登录

  1: exitwindowsex(ewx_reboot,0); //关闭Windows并重新启动

  2: exitwindowsex(ewx_shutdown,0); //关闭Windows

  end;

  End;

  Procedure tform1.button2click(sender: tobject);

  Begin

  close;

  End;

  防止关闭Windows

  要实现“防止关闭Windows”这一功能其实很简单,只要在程序主窗体的OnCloseQuery事件中加入以下代码即可:

  Procedure tform1.formclosequery(Sender: tobject; var canclose: Boolean);

  Begin

  If messagedlg('是否允许关闭?', mtconfirmation, mbokcancel, 0) = mrok then

  Canclose := True

  Else

  Canclose := False;

  End;

  如果把CanClose设为False,表示不允许关闭Windows;如果CanClose设为True,则允许关闭。


  发表评论 写信给编辑 关闭窗口
同栏目内容
· 让你的电脑启动画面绚起来 2007-09-12
· 小技巧帮大忙 极点五笔 2007-09-05
· 如何提高迅雷的下载速度? 2007-09-03
· Vista小技巧 消除红眼 2007-09-03
· 千千静听实用小功能 2007-08-29
· Windows 自动登陆的简单方法 2007-08-20
相关内容
近期主推
我国首架自主产权飞机完成
·我国首架自主产权飞机完成
·机器人版"千手观音"惊艳亮相
·西藏发现青藏高原最大冰川群
·中日: "月亮女神"携手"嫦娥"
·行星大碰撞砸死恐龙催生人类
·美研制会飞汽车定价9万美元
近期热门
科学家解开中子星爆发之谜
·科学家解开中子星爆发之谜
·英海域惊现大龙虾为普通龙虾5倍
·新物种金蛙体表有剧毒
·我国嫦娥工程计划测量月球
·精神病药物可治多种癌症
·视觉震撼:来自海底的精灵
近期焦点
美国发现极其罕见的白化银鲛(图)
·美国发现极其罕见的白化银鲛(图)
·美国展出罕见连体双胎双头龟
·波罗的海发现罕见短吻真海豚
·能帮你做大扫除的机器人[组图]
·法老墓3000年前坚果保存完好
·广西发现罕见溶洞钟乳石有30万年
金桥科普是一个公益性栏目,内容由作者提供或摘自互联网,其目的是向广大网民普及科学技术知识。如果您发现本网站转载或摘编了您拥有著作权的作品,请通知我们(电话:023-63659911),我们立即删除。
关于我们 | 网站地图 | 用户注册 | 广告客户 | 招聘信息 | 业务信息
Copyright@2006-2009 JQInfo.com,WONDER. All Rights Reserved
重庆科技咨询中心.重庆网得信息技术有限公司.版权所有
Email:webmaster@jqinfo.com
重庆数据通信局提供网络带宽. 渝ICP备05002327号