こんにちは、阿久津です。日がな一日ディスプレイの前に座っていますと、あらゆることをコンピュータで制御したくなります。正確な年は忘れましたが、米国の大手ピザチェーン店がインターネット経由で注文を受け付けるようになり、それをUNIXから注文するコマンドを書いたハッカーの気持ちに強い共感を覚えます。同様の意見を持つ方も少なくないでしょう。
元々WindowsはGUI(グラフィカルユーザーインタフェース)操作を前提にデザインされたOSのため、CUI(キャラクターユーザーインタフェース)に強くありません。それでもMicrosoftはWindows Services for UNIXやWindows PowerShellといったコマンドラインからの操作を強めるツールを用意してきました。
確かにWindows Services for UNIXはそれなりに便利でしたが、サポートOSがWindows 2000/XPおよびWindows Server 2003に限定され、現行OSであるWindows 7での動作は未サポート。また、64ビット版Windows OSへの対応もなされていないため、現在であればCygwinを導入するか、仮想環境でLinuxを動かし、端末エミュレータで接続した方が簡単です。
しかし、あくまでもCygwinやLinuxはWindowsとは異なるOSのため、ネットやLAN上のデバイスに対する操作に用いるのは便利ですが、目の前にあるコンピュータを制御する、という意味では役に立つとは言えません。例えば標準搭載されている「shutdown.exe」は、文字どおりコンピュータの電源を操作するコマンドですが、Windows 7から多用されるようになったスリープモードへの移行はサポートしていません(図01)。
コマンドラインから「rundll32.exe Powrprof.dll,SetSuspendState」とPowrprof.dllファイルに用意されたAPIを直接呼び出すことで、コマンドラインからスリープモードへ移行できますが、API名からもわかるとおりサスペンド(休止状態)であるため、スリープモードへの完全移行は不可能です。
具体的には休止状態機能を無効にすることでスリープモードへ移行することが可能ですが、それも少々煩雑な話。もちろん、電源オプションダイアログからスリープへ以降するタイミングをあらかじめ調整しておけば済む話ですが、離席するタイミングは決まっているわけではありません(図02~03)。
図02: [Win]+[R]キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「rundll32.exe Shell32.dll,Control_RunDLL powercfg.cpl,,1」と入力して<OK>ボタンをクリックします |
そこで試して欲しいのが「NirCmd」というツールです。Windows OSのカスタマイズをあれこれと試している方ならご存じのとおり、コンテキストメニューやプロパティダイアログのオブジェクトを管理する「ShellExView」や、DNSレコードを閲覧する「DNSDataView」などをリリースしているNirSoftの成果物の一つ。
前述のリンク先ではNirCmdが実行できるコマンドが並んでいます。CD/DVDドライブの開閉を制御する「cdrom oepn」「cdrom close」、マスターボリュームのオン/オフを制御する「mutesysvolume 0(1)」など便利なオプションが多数用意されているため、Windows OSのカスタマイズを楽しんでいる方には有益な存在になるでしょう。今回はNirCmdを使用し、コンテキストメニューからディスプレイをパワーオフにするチューニングをお届けします。
1.「%USERPROFILE%\bin」フォルダーを作成します。
2.NirCmdをダウンロードし、ステップ01で作成したフォルダーに展開します。
3.展開した各ファイルの「ブロックの解除」を実行します。
4.管理者権限で「regedit」を実行します。
5.レジストリエディターが起動したら、HKEY_CLASSES_ROOT\DesktopBackground\Shellキーを開き、MonitorOffキーを作成します。
6.MonitorOffキーを開き、文字列値「icon」を作成します。
7.文字列値「icon」のデータ値を「C:\Windows\System32\powercpl.dll,0」に変更します(パスはご自身の環境によって変更します)。
8.文字列値「Position」を作成し、値のデータを「Bottom」に変更します。
9.文字列値「MUIVerb」を作成し、値のデータを「モニターオフ(&O)」に変更します。
10.MonitorOffキーの下にcommandキーを作成します。
11.commandキーを開き、文字列値「(既定値)」の値のデータを「C:\Users\kaz\bin\nircmd.exe monitor off」に変更します(パスはご自身の環境によって変更します)。
12.[F5]キーを押してから、レジストリエディターを終了させます。
これでチューニングが終了しました(図04~31)。
図07: 「NirCmd」のWebページにアクセスし、お使いのWindows 7にあわせて「Download NirCmd(64-bit)」のリンクをクリックします。通知バーが現れたら<ファイルを開く>ボタンをクリックしてください |
図17: レジストリエディターが起動したら、HKEY_CLASSES_ROOT\DesktopBackground\Shellキーを開いて右クリックします。メニューから<新規>→<キー>とクリックしてください |
図21: 文字列値「icon」をダブルクリックし、値のデータを「C:\Windows\System32\powercpl.dll,0」に変更して<OK>ボタンをクリックします(パスはご自身の環境によって変更してください) |
図30: 文字列値「(既定値)」をダブルクリックし、値のデータを「C:\Users\kaz\bin\nircmd.exe monitor off」に変更して<OK>ボタンをクリックします(パスはご自身の環境によって変更してください) |
それでは結果を確認してみましょう。デスクトップの何もないところを右クリックしますと<モニターオフ>という項目が追加されていますので、同項目をクリックしてください。これでディスプレイがパワーオフになります。名称などはステップ09で作成した文字列値「MUIVerb」のデータ値がそのまま反映されますので、お好きなものに変更してください。今回は文字列を減らすために「ディスプレイ」ではなく「モニター」という名称を用いました(図32)。
また、図11~15で行っている環境変数「PATH」の追加ですが、本チューニングは直接関係ありません。今後NirCmdをコマンドプロンプトなどから使用する際、PATHを通すことで操作性が向上することを踏まえ同手順を加えました。不要な方は同手順を実行しなくとも問題ありません。なお、以前寄稿したWin 7編: コンテキストメニューから電源操作を行うと併用することで、利便性が大きく向上するはずです。その際はMUIVerbによる項目名の変更をお勧めします(図33)。
それでは、また次号でお会いしましょう。
阿久津良和(Cactus)