私のアプリケーションでは、長時間のタスクの実行が完了すると、Win32 SetSuspendState()
APIを使用してシステムサスペンドまたはハイバネーションがトリガーされます。Vistaでサスペンドを要求しますが、他のアプリケーションのキャンセルを許可します。
APIは、システムがすぐに中断するかどうか、または他のアプリに中断をキャンセルさせるチャンスを最初にPBT_APMQUERYSUSPEND
ブロードキャストするかどうかを決定するパラメータ「ForceCritical」を受け入れます。私のアプリはこれを使ってMedia Playerのような他のアプリとうまくやりとりするので、音楽や何かを聞いていると一時停止しません。
何らかの理由で、Vistaから始めて、MS have changed things so this parameter is ignoredだからSetSuspendState
が直ちに中断され、他のアプリケーションはそれを停止する機会がありません。
Vistaで再び「礼儀正しい」動作を得る方法を知っている人はいますか?