Windowsを終了する
                                                         玄関へお回り下さい。
VBのアプリケーションからWindowsを終了・再起動・ログオフする    (032)
          フォーム等の宣言セクションに記入

Option Explicit    
'SampleNo=032 WindowsXP VB6.0(SP5) 2002.05.01

'カレントユーザーのログオフ、Windowsの終了、再スタートを行う(P1073)
Private Declare Function ExitWindowsEx Lib "user32" _
  (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

'uFlags は終了の方法を指定する次の定数
'応答のないプロセスを強制終了する
Private Const EWX_FORCE = &H4
'現在のユーザーのアプリケーションをクローズし、ログオフする
Private Const EWX_LOGOFF = &H0
'システムをシャットダウン後、再起動
Private Const EWX_REBOOT = &H2
'システムをシャットダウン後、電源オフ可能状態にする
Private Const EWX_SHUTDOWN = &H1
'システムをシャットダウンし、電源をオフにする(電源オフ機能を持つときのみ有効)
Private Const EWX_POWEROFF = &H8
'dwReserved は常に 0


処理したい場所に記入
Private Sub Command1_Click()
'システムをシャットダウンし、電源をオフにする
  Dim Ret As Long   '機種に合せて設定
  Ret = ExitWindowsEx(EWX_POWEROFF, 0&)
End Sub


Private Sub Command2_Click()
'システムをシャットダウン後、再起動
  Dim Ret As Long   'EWX_FORCE は併用しない方が無難です。
  Ret = ExitWindowsEx(EWX_REBOOT, 0&)
End Sub

Windows NT/2000/XP : システムをシャットダウンまたは再起動するには呼び出し側プロセスは AdjustTokenPrivileges 関数を呼び出して、特権を有効にしておかなければなりませんので、これでは作動しません。
又、当然開いているファイル等は閉じてデータ等も保管してから実施して下さい、電源管理等は
機種により、違いますので汎用向けの使用には注意が必要です。ご使用の機種で十分テストの上
ご使用下さい。
Windows NT/2000/XP用はこちらです。




2002/09/02