SetSystemPowerState

機能
システムの電源をシャットダウンする
Declare Function SetSystemPowerState Lib "kernel32.dll" _
(ByVal fSuspend As Long, ByVal fForce As Long) As Long
Declare Function SetSystemPowerState Lib "kernel32.dll" _
(ByVal fSuspend As Integer, ByVal fForce As Integer) As Integer

BOOL SetSystemPowerState(
BOOL fSuspend,
BOOL fForce
);
引数
fSuspend

常に0
fForce
1のときPBT_APMSUSPENDを全てのアプリケーションとドライバに送り
ただちにシャットダウンの状態にする
0のときPBT_APMQUERYSUSPENDを全てのアプリケーションとドライバに送り
シャットダウンしてよいかどうか問い合わせる
戻り値
シャットダウンしていて、システムが回復したとき         0以外
シャットダウンできなかったとき                         0
備考
アプリケーション or ドライバがシャットダウンを拒否したとき、PBT_APMQUERYSUSPENDFALIEDを
全てのアプリケーションとドライバに送る。
システムがシャットダウンするとWM_POWERBROADCASTメッセージ
全てのアプリケーションとドライバに送り、システムが回復するまで戻らない。
でもSDKの解説どおりの動作にならないらしい。