Windows XP では、ラップトップの電源ボタンを押したときにイベントを検出できます。APMQUERYSUSPENDイベントを取得する条件は、[コントロールパネル→電源オプション→システム設定→電源ボタン押下時→スリープ]のオプションを「スリープ」に変更する必要があります。
MainFrm::OnPowerBroadcast(WPARAM wParam, LPARAM lParam)
{
switch (wParam)
{
case PBT_APMQUERYSUSPEND:
// Ask question whether to power off or not
// If not, return BROADCAST_QUERY_DENY
return BROADCAST_QUERY_DENY;
}
しかし、Windows 7 からは、イベントを検出する手がかりがありません。Windows 7 に基づいて、APMQUERYSUSPEND イベントが削除されました。SetThreadExecutionState API を使用して電源オフをブロックしようとしましたが、機能しません。 http://msdn.microsoft.com/ko-kr/library/windows/desktop/aa372716(v=vs.85).aspx
電源ボタンを押したときにイベントをキャッチするアイデアを知っていますか?
ありがとう。