要するに:
ラップトップでサスペンド/スタンバイ メッセージをインターセプトしたいのですが、プログラムがすべての関連メッセージを受信しません。
バックグラウンド:
Windows XP/2k の ms-excel にはバグがあり、ネットワーク/USB ドライブでファイルを開いた場合にシステムがサスペンドするのを防ぎます。
プログラムで回避しようとしています (私のツールボックスには、python、vb6、またはコマンド ライン ツールが含まれています)。
私はWindowsのインストルメンテーションについて何も知りません:-)
とにかくシステムを一時停止するsysinternalsユーティリティがあります。蓋閉めイベントに引っ掛けたい!
長い:
ノートブックのふたを閉じる (fujitsu u810) スタンバイ手順を開始する [どのように?]
次に、システムは全員に WM_POWERBROADCAST: PBT_APMQUERYSUSPEND を送信します (を使用して追跡できますSPYXX.EXE
)
Excelが「偽」と答えるまで、すべてのプログラムが「真」と答え、プロセス全体が停止します。
私の質問:
1) 私の python プログラムは pbm_apmquerysuspend も PBT_APMQUERYSTANDBYFAILED も PBT_APMQUERYSUSPENDFAILED もキャッチしません: ` ...
query = "SELECT * FROM Win32_PowerManagementEvent"
power_watcher = wmi.ExecNotificationQuery ( query )
power_event = power_watcher.NextEvent ()
` 最終的にスタンバイが発生した場合、PBT_APMSUSPEND のみを受け取ります。
なぜですか - どうすれば傍受できますか?
2) スタンバイ プロセスを傍受する別の方法はありますか?
完璧な世界では、選択したコマンドを実行するように蓋を閉じるイベントを設定します。完璧な世界では、蓋を閉めることは文書化されたイベントです。
皆さん、ありがとうございました :-)