掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Windowsのシャットダウン処理が止まってしまう? (ID:20023)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
タスクトレイに常駐するプログラムを作成しています。 フォームは設定画面をメインフォームとしているだけで、 通常は Hide の状態になっています。 [×]ボタンをクリックしてもプログラムが終了しないように、 FormCloseQuery で下記のように CanClose を制御しています。 procedure TfMainform.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin Self.Hide; if(ShutdownClose)then CanClose := True else CanClose := False; end; 上記の ShutdownClose: boolean は、起動時に False になり、 WM_ENDSESSION や WM_QUERYENDSESSION を受信すると Trueに なるようになっています。 //Windows終了時の処理 procedure TfMainform.WMEndSession(var Msg: TMessage); begin ShowMessage('WMEndSession'); ShutdownClose := True; Close; end; //Windowsの終了を検知する procedure TfMainform.WMQueryEndSession(var Msg: TWMQueryEndSession); begin ShowMessage('WMQueryEndSession'); Self.Hide; SimpleTray.DelTray; Msg.Result := 1; ShutdownClose := True; end; スタートボタンをクリックしてシャットダウンを行うと、 メッセージボックスが表示され、プログラムは終了します。 ここまでは期待通りなのですが、Windows のシャットダウン処理が そこで止まってしまい、画面が表示されたままで一向に終了しません。 プロセスを表示するツールで見たところ、プログラムはきれいに 終了しているようです。タスクトレイのほかのアイコンは、 スピーカを除いて全て消えています。 ShowMessage() を外して何も表示しないようにしたところ、 シャットダウンで私のプログラムが終了するとき BEEP が 鳴っているようでしたが、何の音なのかはわかりません。 私のプログラムを常駐させていないときは、サクッと終了します。 私のプログラムがシャットダウン処理の何かを妨害しているようにも 思うのですが、どうしたらよいのかわかりません。 何かアドバイスをいただけないでしょうか。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.