指定されたコンピュータのシャットダウン処理、または再起動を指示する
Declare Function InitiateSystemShutdownEx Lib "ADVAPI32.DLL" Alias "InitiateSystemShutdownExA" _
(ByVal strMachineName As String, ByVal strMessage As String, _
ByVal lngTimeout As Long, ByVal blnForceAppsClosed As Long, _
ByVal blnRebootAfterShutdown As Long, ByVal dwReason As Long) As Long
Declare Function InitiateSystemShutdownEx Lib "ADVAPI32.DLL" Alias "InitiateSystemShutdownExA" _
(ByVal strMachineName As String, ByVal strMessage As String, _
ByVal lngTimeout As Integer, ByVal blnForceAppsClosed As Integer, _
ByVal blnRebootAfterShutdown As Integer, ByVal dwReason As Integer) As Integer
BOOL InitiateSystemShutdownEx(
LPTSTR lpMachineName,
LPTSTR lpMessage,
DWORD dwTimeout,
BOOL bForceAppsClosed,
BOOL bRebootAfterShutdown,
DWORD dwReason
);
引数
strMachineName
シャットダウンをするマシン名strMessage
vbNullStingのとき、ローカルマシンが対象
シャットダウン・ダイアログボックスに表示するメッセージlngTimeout
シャットダウンまでの時間(sec)blnForceAppsClosed
0のとき、即時シャットダウン
アプリケーションが保存されていないときの処理blnRebootAfterShutdown
True・・・・強制的に終了
False・・・ アプリケーション終了のダイアログを表示
再起動するかどうかを指定するdwReason
True・・・・再起動する
False・・・ コンピュータは電源を切っても安全な状態のメッセージを表示
シャットダウンする理由を記録する戻り値
この理由は、イベント番号 6006 でイベントログに記録される
正常終了のとき 0以外備考
エラーのとき 0
ローカルマシンのシャットダウンをするには、呼び出し側のプロセスに
SE_SHUTDOWN_NAME特権が必要。リモートコンピュータの場合は、呼び出し側のプロセス
リモートコンピュータに対するSE_REMOTE_SHUTDOWN_NAME 特権が必要。
エラー情報を取得するにはGetLastError()関数で取得できる
当然のことながら、この関数はWindowsNT系(3.1以降)しか対応していない