◆ [VBScript] PCをスタンバイにする
おはヨーグルト。どーもボキです。

VBScriptから、PCをスタンバイにする方法。他にもシャットダウン、再起動なども可能。
ただし、実行には管理者権限が必要。まぁフツー管理者で使うから問題ないだろ。
Set objWS = CreateObject("WScript.Shell")

' スタンバイ
objWS.Run "rundll32 powrprof.dll,SetSuspendState"

' 休止状態
objWS.Run "rundll32 powrprof.dll,SetSuspendState Hibernate"

' シャットダウン
objWS.Run "shutdown -s"

' 再起動
objWS.Run "shutdown -r"

' ログオフ
objWS.Run "shutdown -l"

上記のやり方では、休止状態が有効になっている場合、スタンバイにはならない。(SetSuspendState関数に引数を指定してないため)
ExcelがインストールされているPCならば、以下の方法でスタンバイに移行できる。
Set objExcel = CreateObject("Excel.Application")

' スタンバイ
cmd = "CALL(""powrprof.dll"",""SetSuspendState"",""JJJJ"",0,0,0)"

' 休止状態
cmd = "CALL(""powrprof.dll"",""SetSuspendState"",""JJJJ"",1,0,0)"

objExcel.ExecuteExcel4Macro(cmd)
objExcel.Quit ' QuitしないとExcelプロセスが残るため



管理者権限がない場合はこっち。こっちで使うSendKeysは、キーボード入力をスクリプトで再現するもの。
入力したキーは再前面のウィンドウが拾うので、PCを操作してたらうまく動かんかもしれん。
' タスクマネージャーを起動
Set objWS = CreateObject("WScript.Shell")
objWS.SendKeys "^+{esc}"
Do While Not objWS.AppActivate("Windows タスク マネージャ")
WScript.Sleep 100 ' タスクマネージャー起動待ち
Loop
WScript.Sleep 100

' ショートカットキーを送信
objWS.SendKeys "%ub%fx" ' スタンバイ
objWS.SendKeys "%uh%fx" ' 休止状態
objWS.SendKeys "%uu%fx" ' シャットダウン
objWS.SendKeys "%ur%fx" ' 再始動
objWS.SendKeys "%ul%fx" ' ログオフ



[PR]
by yozda | 2012-06-16 09:38 | プログラミング | Trackback | Comments(0)
トラックバックURL : http://yozda.exblog.jp/tb/15574265
トラックバックする(会員専用) [ヘルプ]
<< [VBScript] 指定した... [VBScript] 指定した... >>