アプリケーションが終了する場合トレイアイコンの
左クリックでメニューの表示
右クリックでポップアップメニューを表示して終了ボタンをクリックしたときだけ
終了するようにし、システム(ウィンドウのx)ボタンはメニューを隠すだけで、
終了しないようにするために以下のようにしています。
ExitFlag: Boolean;
ExitFlag := false;
// 終了確認
procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean)
begin
if ExitFlag = false then Hide;
CanClose := ExitFlag;
end;
procedure TFormMain.MenuItemExitClick(Sender: TObject)
begin
// 編機データクラス破棄
ExitFlag := true;
Close;
end;
ここでですが、上記の処理の仕様のままでPCをシャットダウンする場合に
現状では終了できません。
PCのシャットダウン時はアプリケーションを自動的に終了したいのですが
どうすればよいでしょうか?
理由は、ネットワーク経由で ShutDown コマンドを使ってPCの電源を
落としたいのです。
こんにちは。
以下の様な感じで WM_QUERYENDSESSION を捕捉すればいいのではないでしょうか?
private
{ Private 宣言 }
procedure QueryEndSession(var Msg : TWMQueryEndSession); message WM_QUERYENDSESSION;
...
// Windows の終了を検知する
procedure TFormMain.QueryEndSession(var Msg : TWMQueryEndSession);
begin
Msg.Source := 1;
MenuItemExitClick(nil);
end;
# shutdown.exe に -f オプションを付けるというテもありますが。
ありがとうございます。
終了するようになりました。
ツイート | ![]() |