记录计算机关机时间(100分)

  • 主题发起人 主题发起人 wjshh
  • 开始时间 开始时间
W

wjshh

Unregistered / Unconfirmed
GUEST, unregistred user!
我想记录计算机关机时间,我在窗体FormClose中写入事件,直接关闭本程序时可执行FormClose中的内容,
可关闭计算机时,不能执行FormClose中的内容。望高手指点一二。
 
关闭计算机时好像不会执行FormClose中的内容,但会执行FormCloseQuery里的内容哦。嘻嘻。
或者把代码写在FormDestroy里也可以。
 
if os is win nt/2k you can use service
when the service is close(power do
wn).write something
 
在程序加上一个消息处理方法,获取windows的关机消息后响应丰关事件
如下:
private
{ Private declarations }
procedure WndProc(var MSG:TMessage);override;
procedure TForm1.WndProc(var MSG:TMessage);
begin
if Msg.Msg=WM_QUERYENDSESSION then
//如果是关机消息
begin
//加入处理事件,如记录当前时间
showmessage(formatdatetime('yyyy-mm-dd HH:SS',Now));
application.Terminate ;
end;
inherited Wndproc(MSG);
end;
就成了
 
TO: 海风
是不是应该用 WM_ENDSESSION ?编程强制退出Windows时好像不会发送 WM_QUERYENDSESSION ?
 
procedure FormQuit(var message: TWMQueryEndSession);
message WM_QueryEndSession;
 
你可以试试,我想这不是个难题吧
 
我按照叮叮当当的方法实现了我的要求。谢谢大家的帮助。
TO hamsoft
你写的procedure FormQuit(var message: TWMQueryEndSession);
message WM_QueryEndSession;
是什么意思可否知?
 
我加了关机命令: exitwindowsex(ewx_shutdown,0);
可执行这个命令时不执行FormCloseQuery事件
 
直接调用该事件不就行了吗
 
procedure FormQuit(var message: TWMQueryEndSession);
message WM_QueryEndSession;
------------------------
这是拦截消息函数吧,然后定义自己的消息处理过程吧^_^
WM_QueryEndSession这个消息的触发条件是什么呢?
请指出吧??
 
WM_QueryEndSession是windows退出时触发的。
应用程序收到该消息,就会执行formquit过程,你可其中写入需要的代码。
(formquit只是个随便起的。不是什么系统名称)
 
多人接受答案了。
 
后退
顶部