MS Access Tips/Sample and VBA and Blog customize etc...

Windows7 タスクバーにスリープボタンを配置する

タスクバー上のスリープボタン

図のようにタスクバーにスリープボタンを配置するTipsの紹介です。

以前は 電源管理ガジェット を使っていたのですが、新PCでインストールしようとしたら、「Windows Web サイトでは、ガジェット ギャラリーのホストを終了しました」とのこと。MSとしてはガジェットはもうサポートしないということらしい。

作者のページからはダウンロードできるのだが、4つのボタン(電源オフ、再起動、スリープ/休止、ロック)の内、自分が使うのはほとんどスリープだし、いざ使おうとすると最大化したウィンドウの後ろに隠れていたりとか(常に全面表示すればいいのだかそれはそれで目障りだし)、微妙に使いにくいので、他に方法はないかなと考えてみました。

usiwin: 電源管理ガジェットのバージョン 2.3 を公開します

そこで、タスクバーだと隠れることもなくいつでもクリックしやすいので、タスクバーに配置する方法を探してみました。

難易度:

WEBに流布している「スリープのショートカットアイコンを作成する方法」の落とし穴

「スリープ ショートカットアイコン」でWEB検索すれば非常に多くのTipsや掲示板での回答は見つかります。

ショートカットアイコンのリンク先に、下記のコマンドを設定すればいいというのがほとんどです。

他にも、

などとと引数を省略したり、引数を 0, 1, 0 というのもあります。

これだけだと、休止状態 になってしまうので、コマンドプロンプトから、

を実行して「休止状態」を無効にするとスリープに移行できると言っています。

私も最初この方法を採用していたのですが、その後さらに調べてみると、これには問題があるそうです。

コマンドラインからWindows PCを停止(スリープなど)する方法 | TipsZone

上記のページによると、

・この方法でスリープへ移行した場合、ハイブリッドスリープにはなりません。 したがって、電源が切れるとメモリ上のデータが失われます。
・この方法でスリープ(スタンバイ)へ移行した場合、タスクスケジューラからの自動復帰ができないことがあるようです。

つまり、下記のように、タスクの自動実行が実行されなかったり、TV自動録画が失敗したりという悲劇が起こったりします。

コマンドラインからのスタンバイ状態移行とタスクによるスリープ解除?-?Field Isle - ITマネージャ・システムトレーダーの日々

なぜ、rundllでの呼び出しがダメかという詳しい解説は下記を参照してください。

rundll32.exe powrprof.dll,SetSuspendState Sleepって大嘘は誰が言い出したん - xcaqhbajのメモ

要は、rundll で SetSuspendState を呼び出したのではコマンドライン引数は無視され、すべてTrueが設定されたことになるということです。 

推奨される「スリープのショートカットアイコンを作成する方法」

では、どうしたらいいのかというと、専用のプログラムを作成して、そこで SetSuspendState を呼び出して正しく引数を設定する必要があるのです。上の TipsZoneさんのところでは、Ruby スクリプトから呼び出す方法が紹介されていますが、これだとコマンドプロンプトウィンドウが表示されるので、ちょっと鬱陶しい。いろいろ探して、下記を見つけました。

Snap Note 開発記 from ソフトウェアデザイン館 Sage Plaisir 21:バッチファイルなどから PC をスタンバイ状態にする

C/C++で書かれておりソースも公開されているので問題ないと思われます。ダウンロードは下記から、

Automatic Tools' Download - Sage Plaisir

上記からダウンロードした setsuspendstate.zip 内の setsuspendstate.exe を適当なフォルダにコピーします。普通は「Program Files (x86)」がいいでしょう。setsuspendstate.exeファイルを右クリックして [送る]-[デスクトップ(ショートカットを作成)] をクリックします。

デスクトップにできたショートカットアイコンを右クリックして、[ショートカット]タブの[詳細設定]をクリック、「管理者として実行」にチェックを入れる。

あとは、アイコンをお好みに変更したり、名前を「スリープ」に変更するなりお好みに設定してください。アイコンは、%SystemRoot%\system32\SHELL32.dll 内に電源ボタンのものがありますのでそれを使ってもいいでしょう。hatenaはWEBで好みのアイコンを探しました。

ちなみに、休止状態 にしたい場合は、ショートカットアンコンのプロパティのリンク先を下記のように引数 1 を設定します。

ただし、「powercfg /hibernate off」等を実行して「休止状態」を無効にしている場合は、コマンドプロンプトから下記を実行して有効に変更しておいてください。

タスクバーにスリープボタンを配置する方法

上で作成したショートカットを右クリックして「タスクバーに表示」をクリックすればいいだけです。下図のようにタスクバーの左端(スタートボタンの隣)に表示されます。

スリープボタンをタスクバーに表示

これで十分だと思いますが、最初の画像のようにタスクバーの左端(タスクトレイの隣)に表示させたいと思ったのですが、ドラッグしても左端に固定できません。

そこで、Windows7では非表示になっている「クイック起動」を表示させてそこに配置するという方法を採用しました。これなら好きな場所に移動できます。

「クイック起動」表示の方法は、下記のページが分かりやすいので参照ください。

Windows 7 で「クイック起動」を表示させる方法

表示できたら、上で作成したショートカットアイコンを「クイック起動」上にドラッグ&ドロップします。

なお、上記の作業はタスクバー右クリックメニューの「タスクバーを固定」のチェックを外しておいてから行なってください。「クイック起動」の位置、サイズが決まったら「タスクバーを固定」にチェックを入れると冒頭の画像のようになります。


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/358-91c54ce3
該当の記事は見つかりませんでした。