Windows8にシャットダウンのショートカットを作る

Windows8にシャットダウンのショートカットを作る
Windowsにカウントダウン式のシャットダウンを行うスクリプトを作ってみます。 Windows8でなくとも、WindowsXPやWindows7でも実行できます。 Windows8のシャットダウンはタッチパネルでない場合、マウスを右端上下のホットコーナーに合わせて、チャームを出し、設定からシャットダウンを選ぶ、という手順が必要です。 Shutdown.exe WindowsにはXPのころからshutdown.exeという実行ファイルがあり、これを直接実行することで、シャットダウンを行うことができました。 コマンドプロンプトを立ち上げて以下を入力すると、30秒後にシャットダウンに入ります。(保存していない書類があるときは実行しないでください) [text] shutdown.exe -s -t 30 [/text] この三十秒の間に、シャットダウンを中止するには [text] shutdown.exe –a [/text] で中止することができます。 しかし、シャットダウンのためにコマンドプロンプトからコマンドを入力するのは、むしろ手間がかかるので、実際に実行する人はいないと思います。 筆者の理想としては、Macのシステム終了のように、終了を実行してから、自動的にカウントダウンが始まり、その間に即時終了とキャンセルのできるものです。カウントダウンが終わると、自動的にシステムが終了します。 これにできるだけ近いスクリプトを作って、ショートカットから実行できるようにしてみたいと思います。 スクリプト実例 ファイル名: shutdown.vbs [vb] Option Explicit 'define Dim execParam Dim intCounter Dim rtn Dim WSHobj Dim Args Dim WaitCounter Dim flgForth Const DEFAULT_COUNTER = 30 Const MINIMUM_COUNTER = 10 flgForth = 0 'Argument Check and Set If WScript.Arguments.Count = 0 then WaitCounter = DEFAULT_COUNTER Else Set execParam = WScript.Arguments If IsNumeric(execParam(0)) = false Then WaitCounter = DEFAULT_COUNTER Else WaitCounter = Cint(execParam(0)) End If If WScript.Arguments.Count = 2 Then If execParam(1)="f" Then flgForth = 1 End If End If If WaitCounter <= MINIMUM_COUNTER Then WaitCounter = MINIMUM_COUNTER 'Waiting loop For intCounter = WaitCounter to 1 step -1 Set WSHobj = WScript.CreateObject("WScript.Shell") Args = "cscript ""popup.vbs""" _ & " """ & CStr(intCounter) & "秒後にシャットダウンします" & Chr(13) & Chr(10) & "OKですぐにシャットダウンします""" _ & " 1" _ & " ""シャットダウン""" _ & " 1" rtn = WSHObj.Run (Args,0,true) Select Case Rtn Case 1 call procShutdown Case 2 call procAbort Case Else ' End Select Next Call procShutdown Wscript.Quit 'shutdown Procedure Sub procShutdown Dim Wshshell Set Wshshell = WScript.CreateObject("WScript.shell") If flgForth=1 then Wshshell.run("shutdown.exe -s -f -t 0") Else Wshshell.run("shutdown.exe -s -t 0") End If WScript.Quit End Sub 'abort Procedure Sub procAbort WScript.Quit End Sub [/vb] ファイル名: popup.vbs [vb] Option Explicit Dim Arg Dim rtn Dim WSHObj Set WSHObj = WScript.CreateObject("WScript.Shell") Set Arg = WScript.Arguments rtn = WSHObj.Popup(Arg(0),Arg(1),Arg(2),Arg(3)) if rtn=1 or rtn = 2 then WScript.Quit(rtn) Set WSHobj = Nothing [/vb] 使い方 この2つのスクリプトをそれぞれ、vbsファイルとして保存します。 それらを一つのフォルダに格納し、起動する際はshutdown.vbsをダブルクリックします。 カウントダウンが始まります。OKを押せば即時終了。キャンセルを押すと終了をキャンセルできます。 カウントダウンがおわると、自動的にシャットダウンします。 ショートカットのつくり方 shutdown.vbsを右クリックし、ショートカットの作成を選択します。 作成されたショートカットのプロパティを開きます。 ここで「アイコンの変更」を選択し、電源ボタンに変えてみます。 このアイコンを設定して、デスクトップにコピーすれば、いつでもショートカットからアクセスできます。 オプション このオプションは指定しなくとも、利用することができます。 vbsファイルの後に半角スペースを一つ開けて、数値を入力すると、カウントダウン秒数を変更できます。 最低限の猶予のために10秒以下は設定できなくなっています。 カウントダウン秒数の次に、スペースを一つ開けて、fと入力すると、アプリケーションの応答を待たず、強制的にシャットダウンします。 保存していないファイルも警告なしにシャットダウンし、失われてしまいます。 あまりお勧めのオプションでないので、よく理解していただいたうえでお使いください。