Mam's WebSite
建築CGパース住宅CGパース

Mamの覚書Q&A検索

トップページMamの覚書Q&A検索Delphi(いろいろ)⇒Q&A


大項目:「 Delphi 」 - 中項目:「 いろいろ 」

「 Windows自体(OS自体)の終了を感知する 」

delphiで常駐アプリを作成していますが、Windowsのシャットダウンを感知する方法はありますか。
TFormクラスのOnCloseQueryプロパティは、アプリの終了イベントを感知するプロパティなので、
これを使ってしまうと、Windows自体がシャットダウンできなくなってしまいます。 
他に方法はありませんか。


回答

あります。
WM_QUERYENDSESSIONイベントを捕まえれば良いのです。

ソース

type
  TForm1 = class(TForm)
  private
    { Private 宣言 }
    procedure OSEnd(var Msg : TWMQueryEndSession);message WM_QUERYENDSESSION;
  public
    { Public 宣言 }
  end;
 
implementation
 
procedure TForm1.OSEnd(var Msg : TWMQueryEndSession);
begin
  if  MessageDlg('終了しますか?',mtInforamtion,[mbYes,mbNo],0) = mrNo then  
  begin
      //  Windowsの終了をキャンセルする
      Msg.result  :=  LongInt(false);
  end
  else
    Msg.Result := LongInt(True);
 
end;


Mam's WebSite