指定コンピュータのシャットダウン・中止 <TOP>
指定したコンピュータをシャットダウンおよびその処理を中止します。
InitiateSystemShutdown 指定されたコンピュータのシャットダウン処理、または再起動を設定
AbortSystemShutdown InitiateSystemShutdown関数が開始したシステムのシャットダウン処理を中止
TimeLeftで指定された時間カウントダウン表示、シャットダウン処理されます。
チェックボックスにて「再起動」「安全に電源を切ることができる」を選択できます。
\\Hitachi(例ではWindows2000)側では図のウィンドウが表示されます。
'================================================================ '= 指定コンピュータのシャットダウン・中止 '= (InitiateSystemShutdown.bas) '================================================================ #include "Windows.bi" ' 指定されたコンピュータのシャットダウン処理、または再起動を設定 Declare Function Api_InitiateSystemShutdown& Lib "advapi32" Alias "InitiateSystemShutdownA" (ByVal lpMachineName$, ByVal lpMessage$, ByVal dwTimeout&, ByVal bForceAppsClosed&, ByVal bRebootAfterShutdown&) ' InitiateSystemShutdown関数が開始したシステムのシャットダウン処理を中止 Declare Function Api_AbortSystemShutdown& Lib "advapi32" Alias "AbortSystemShutdownA" (ByVal lpMachineName$) Var Shared Edit(2) As Object Var Shared Button1 As Object Var Shared Button2 As Object Var Shared Check1 As Object Var Shared Timer1 As Object For i = 0 To 2 Edit(i).Attach GetDlgItem("Edit" & Trim$(Str$(i + 1))) Edit(i).SetFontSize 14 Next Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14 Check1.Attach GetDlgItem("Check1") : Check1.SetFontSize 14 Timer1.Attach GetDlgItem("Timer1") Var Shared TimeLeft As Long '残り時間 '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Edit(0).SetWindowText "\\Hitachi" Edit(1).SetWindowText "APIデモ:シャットダウンMSG" Edit(2).SetWindowText "30" Check1.SetWindowText "「安全に電源を切ることができる」" Button2.EnableWindow 0 Timer1.SetInterval 100 Timer1.Enable 0 End Sub '================================================================ '= シャットダウン '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var fg As Integer Var Ret As Long fg = Check1.GetCheck Ret = Api_InitiateSystemShutdown(Edit(0).GetWindowText, Edit(1).GetWindowText, val(Edit(2).GetWindowText), True, fg) If Ret = 0 Then A% = MessageBox(GetWindowText, "失敗しました!", 0, 2) Else Button1.EnableWindow 0 Button2.EnableWindow -1 Timer1.Enable -1 TimeLeft = Val(Edit(2).GetWindowText) End If End Sub '================================================================ '= シャットダウンキャンセル '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var Ret As Long Ret = Api_AbortSystemShutdown(Edit(0).GetWindowText) If Ret = 0 Then A% = MessageBox(GetWindowText, "失敗しました!", 0, 2) Else SetWindowText "キャンセルしました!" Button1.EnableWindow -1 Button2.EnableWindow 0 Timer1.Enable 0 Wait 200 SetWindowText "InitiateSystemShutdown" End If End Sub '================================================================ '= カウント '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() SetWindowText "シャットダウン[" & Edit(0).GetWindowText & "]" & Str$(TimeLeft) & "秒後" TimeLeft = TimeLeft - 1 If TimeLeft = 0 Then Button1.EnableWindow -1 Button2.EnableWindow 0 Timer1.Enable 0 SetWindowText "InitiateSystemShutdown" End If End Sub '================================================================ '= '================================================================ Declare Sub Check1_on edecl () Sub Check1_on() If Check1.GetCheck = 0 Then Check1.SetWindowText "「安全に電源を切ることができる」" Else Check1.SetWindowText "「再起動」" End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End