在程序中如何知道WINDOWS是在关机、重起还是注销???FOR WIN98,WIN2k(100分)

  • 主题发起人 主题发起人 jcg
  • 开始时间 开始时间
用WINAPI FUNCTION.
例:
if ExitWindowsEx(EWX_SHUTDOWN,1) then
...
参看HELP.
 
wmsoft 你说的是在你的程序中关机,jcg说的是怎么知道window系统要关机
我想应该是在系统关机时有一个关机的消息发送,

在wind2k下是WM_POWERBROADCAST,在98下我不知道是什么
在你的程序中拦截此消息即可
procedure WMPowerBroadcast(var message: TMessage); message WM_POWERBROADCAST;

procedure TForm1.WMPowerBroadcast(var message: TMessage);
const SkipNextPowerMsg:boolean=True;
begin
if SkipNextPowerMsg then
begin
SetForegroundWindow(Self.Handle);
if Application.MessageBox('是否关闭系统?','警告',MB_OKCANCEL + MB_DEFBUTTON2)<>IDOK then
begin
message.Result := BROADCAST_QUERY_DENY;
SkipNextPowerMsg:=not SkipNextPowerMsg;
end
else
Close;
end
else
SkipNextPowerMsg:=not SkipNextPowerMsg;
end;
 
谢谢CTX26
谁知道WIN98下怎么做??
 
当系统要关机时,会发一个消息:wm_QueryEndSession

你拦截这个消息后。

可以给result 赋值。

1表示可以关机
0表不允许关机

但这个消息对关机重起都一样的

我现在也不知道怎么分清这两种情况
 
接受答案了.
 
后退
顶部