Win2kで休止状態になる時がわかるメッセージを探しているんですがよくわかりません(終了時はWM_QUERYENDSESSIONとうでわかるのですが)どなたか、教えてください。
Halbow です。
> Win2kで休止状態になる時がわかるメッセージを探しているんですがよくわかりません
WM_POWERBROADCAST というメッセージが飛んできます。これの定義は D5 では
messages.pas にあります。どのような状況かは、このメッセージの WParam で
知ることが出来ます。
const
PBT_APMQUERYSUSPEND = $0
PBT_APMQUERYSTANDBY = $1
PBT_APMQUERYSUSPENDFAILED = $2
PBT_APMQUERYSTANDBYFAILED = $3
PBT_APMSUSPEND = $4
PBT_APMSTANDBY = $5
PBT_APMRESUMECRITICAL = $6
PBT_APMRESUMESUSPEND = $7
PBT_APMRESUMESTANDBY = $8
これらの定数定義は D5 にはありませんでしたので、自分で定義しておきます。
わたしの環境も Win2000 ですが、以下のコードで
{ Private 宣言 }
public
procedure WMPowerBroadcast(var Msg:TMessage);message WM_POWERBROADCAST;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMPowerBroadcast(var Msg: TMessage);
begin
inherited;
Memo1.Lines.Add(IntToStr(Msg.WParam));
end;
試したところ、休止状態、復帰で Memo1 には
0 (PBT_APMQUERYSUSPEND)
4 (PBT_APMSUSPEND)
18 ?
7 (PBT_APMRESUMESUSPEND)
と表示されました。この順序でメッセージが飛んでくるようです。
google で WM_POWERBROADCAST で検索するとたくさんドキュメントが見つかります。
ツイート | ![]() |