終了時の処理

解決


吉本  2005-11-20 05:21:44  No: 18824

バックグラウンドで動作するソフト(非表示ウインドウ使用)を作っているのですが、OSの終了とともに終了する際、データ(TStringList)を保存したいのですが、どうすればよいでしょうか。
宜しく願いします。


WMEndSession  2005-11-20 23:26:06  No: 18825

こんな感じでしょうか

type
  TForm1 = class(TForm)
    procedure WMEndSession(var Msg: TMessage);
      message WM_ENDSESSION;
    procedure WMQueryEndSession(var Msg: TMessage);
      message WM_QUERYENDSESSION;
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

//Windowsの終了時に動作するイベント
procedure TForm1.WMEndSession(var Msg: TMessage);
begin
  if (Msg.WParam = 1) then begin
    //
    // OS終了時の処理(ここでSaveToFile等を実行)
    //
  end;
end;

//Windowsの終了を検知
procedure TForm1.WMQueryEndSession(var Msg: TMessage);
begin
  if ( Application.MessageBox('Windows終了?',
            PChar(Application.Title),
            MB_ICONEXCLAMATION or MB_YESNO ) = IDYES) then
    Msg.Result := 1      //許可(WMEndSessionが実行される)
  else
    Msg.Result := 0;     //非許可
end;


吉本  2005-11-21 00:01:12  No: 18826

WM_ENDSESSIONはTApplicationEventsでやってみて無理だったので無理かと思いましたが、WMEndSessionさんのおっしゃるようにしたら出来ました。
有難うございました。m(__)m


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

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






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