Windows2000終了時にOSから来るメッセージは?

解決


すすむ  2009-01-16 04:46:37  No: 69465

Windows2000のシャットダウン時に終了処理としてiniファイルの情報を更新してアプリケーションを終了させるソフトを作っています。

通常時、スタートメニューからシャットダウンした場合は、
シャットダウン時にOSが出すWM_QUERYENDSESSION、WM_ENDSESSIONのメッセージを受けて終了処理を行うようにしてできたのですが、
UPS(無停電電源)からの信号でシャットダウンされた場合うまくメッセージを受けられません。

スタートメニューから終了させた時と違ってUPSで終了した場合「コンピュータの電源を切ることができます」というメッセージが出て終了するのですが、この場合はWM_QUERYENDSESSION、WM_ENDSESSIONは来ないのでしょうか?または何か別のメッセージが出るということであれば教えて頂けると助かります。
USPはユタカ電機製で実際にシャットダウンを行うのはFelisafeLiteという停電検出ソフトです。
(FelisafeLiteが何か特別な処理をしている可能性もあるのですが・・・)

何かご存知の方がいましたら教えてください。よろしくお願い致します。


みい  2009-01-16 04:56:03  No: 69466

他社のUSPを2,3社使ってますが、いずれもAPにWM_QUERYENDSESSIONを投げて終了するAPを別途作成し、停電検出ソフトの検出時の処理でそのAPを起動するようにしています(シャットダウンまでの時間はAPが終了できる時間分調整)。


すすむ  2009-01-16 05:52:35  No: 69467

みいさん

早速の回答ありがとうございます。

みいさんもそういった対応を取られているということはUPSでシャットダウンされる時はWM_QUERYENDSESSIONが来ないというのは確定なのでしょうか?
その確証が取れるだけでもありがたいです。

みいさんがやられている方法に近いですが、FelisafeLiteにアプリを登録しておくと、シャットダウン開始時にイベント通知してくれるようなので、
その方法も並行して検討しています。


みい  2009-01-16 06:38:30  No: 69468

まあ、UPSの場合は各APにWM_QUERYENDSESSION投げて「終了できませんよ」って返されても困りますからねえ。
Windows終了最優先になっているのでしょう。

WM_QUERYENDSESSIONがくるのは「ユーザー操作による終了」か「APからExitWindows関数が呼ばれた場合」になっています。


すすむ  2009-01-16 20:56:31  No: 69469

みいさん

情報ありがとうございました。
WM_QUERYENDSESSIONは当てにせず処理する方法で考えることにします。


すすむ  2009-01-16 20:57:19  No: 69470

解決にチェック入れるの忘れました。すみません。


aetos  2009-01-17 00:55:55  No: 69471

ExitWindowsEx 時に EWX_FORCE フラグを立てると、WM_QUERYENDSESSION も WM_ENDSESSION も来ません。


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

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






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