[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" ' ログオフ



名前
URL
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

by yozda | 2012-06-16 09:38 | ボキ、しごとのヒント集める | Comments(0)

ボキの興味、書き散らかします


by ボキ
カレンダー
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31