程序中怎样侦测系统要关机?(50分)

  • 主题发起人 主题发起人 zhangkan
  • 开始时间 开始时间
Z

zhangkan

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的一个程序没有在状态栏显示,关机的时候电脑就关不了,只有将程序关掉了再能关电
脑,请问是怎么回事?怎样才能解决问题?若电脑要关机,程序中要怎样写才能自动侦测到。
若问题复杂,我再加分。谢谢!
 
在QueryClose中处理即可!
 
在QueryClose中处理即可!
 
我在FormCloseQuery中加上了下面的語句﹐因為我要在一個特定的地方關閉程序才行。我
知道是下面的語句造成不能關機﹐但是我需要這么一個判斷﹐所以我要偵測WINDOWS關機﹐
關機應該有一條消息﹐這消息是什么﹐我怎么捕捉這一條消息。我裝的是WIN 2000。謝謝﹗
if not ExitOK then
begin
CanClose:=False;
end;
 
用Delphi实现禁止用户关闭Window9X
在软件的安装或演示操作等过程中,如果关闭WIN9X会产生严重的后果,
就必须禁止用户关闭WIN9X,直到完成相应的操作,那么如何才能禁止用户
关闭WIN9X呢?其实很简单,当用户关闭WIN9X时, 系统会发送给各应用程序
一个消息wm_queryendsession, 告诉各应用程序要关机了,如果反馈回来的
消息值为0,那么WIN9X就不能关机。因此,截获wm_queryendsession,并反馈
回0,大功就告成了,下面是一个例子。

//声明拦截WM_QueryEndSession消息的过程
procedure WMQueryEndSession(var Msg: TMessage); message WM_QueryEndSession;

procedure TForm1.WMQueryEndSession(var Msg: TMessage);
begin
if CheckBox1.Checked then Msg.Result := 1
else Msg.Result := 0;
end;
 
在onclose中处理也可。
 
procedure MyShutDown(var Message:TMessage );Message WM_USERCHANGED; //更改当前用户
procedure MyEndsession(var Message:TMessage );Message WM_ENDSESSION;//注消当前用户
procedure MyQuseryEnd(var Message:TMessage );Message WM_QUERYENDSESSION;//关机或重新启动
procedure ExitApp();//自定义退出函数

procedure TTimeServer.MyEndsession(var Message:TMessage );
begin
ExitApp();
inherited //继承Windows原消息处理机制,不能省,否则此消息会被你的程序堵塞,其他程序无法响应
end;
procedure TTimeServer.MyQuseryEnd(var Message:TMessage );
begin
ExitApp();
inherited
end;
procedure TTimeServer.MyShutDown(var Message:TMessage );
begin
ExitApp();
inherited
end;

procedure TTimeServer.ExitApp();
begin
if Not TimeServer.Visible Then
Begin
TimeServer.show;
SetWindowLong(Application.Handle,GWL_EXSTYLE, MyWindowsLong);
BringWindowToTop(Application.Handle);
Application.Restore;
SetForegroundWindow(Application.Handle);
End;
TimeServer.Close;
end;
若有不详之处再说!
 
谢谢各位!!!可惜分数少了点。请问lycwg,那是你写的一个控件吗?MyShutDown更改当前用
户是怎样更改,不用重新登录吗?若你那是一个控件,请问能将源代码发给我看看吗?
谢谢!
 
MyShutDown是自编的一个针对当Windows的用户发生改变时(系统发给应用程序的通知消息)
的一个处理函数。不是控件!
在NT WorkStation或Windows 2000中,当本机用户发生改变或与其他服务器连接用户名
发生改变时,系统会广播此消息,应用程序可借此做相应处理。
 

Similar threads

D
回复
0
查看
812
DelphiTeacher的专栏
D
D
回复
0
查看
758
DelphiTeacher的专栏
D
D
回复
0
查看
707
DelphiTeacher的专栏
D
后退
顶部