Win2kで休止状態になる時のメッセージは何を送るのですか。


マッコ  2004-01-08 22:07:34  No: 6601

Win2kで休止状態になる時がわかるメッセージを探しているんですがよくわかりません(終了時はWM_QUERYENDSESSIONとうでわかるのですが)どなたか、教えてください。


Halbow  URL  2004-01-09 03:32:26  No: 6602

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 で検索するとたくさんドキュメントが見つかります。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加