バックグラウンドで動作するソフト(非表示ウインドウ使用)を作っているのですが、OSの終了とともに終了する際、データ(TStringList)を保存したいのですが、どうすればよいでしょうか。
宜しく願いします。
こんな感じでしょうか
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;
WM_ENDSESSIONはTApplicationEventsでやってみて無理だったので無理かと思いましたが、WMEndSessionさんのおっしゃるようにしたら出来ました。
有難うございました。m(__)m
ツイート | ![]() |