2009 年 10 月 30 日

モニタの電源を切るアプリ『MonitorOffTimer』


マルチディスプレイ、特にトリプルディスプレイ以上を使っていると、ちょっと席を外すときにモニタの電源を切るのが面倒になってきます。

電源を入れっぱなしですと電気代がもったいないですし、無駄にバックライトの寿命も縮まります。
そこでモニタの電源をソフトウェア的に切りたいわけですが、Windowsには「モニタの電源を切るボタン」が標準で用意されておらず、わざわざコントロールパネルの電源管理を開いて「モニタの電源を切る時間  1分」と設定しなくてはいけません。
これは面倒です。復帰したときにわざわざ設定時間を元に戻す手間もいります。

『簡単にモニタの電源を切ってくれるソフトはないかなぁ……』と思い、グーグルで「モニタ 電源 オフ」的なワードで検索するとズバリ目当ての機能を持った某ソフトが出てきました。
しかし、その某ソフトは使い勝手が悪いのです。
・起動の度に一々、「モニタの電源を切りますか?」というダイアログが出てくる。切りたいから起動してるのにね!
・マウス左クリックで通常に復帰する仕様となっていますが、ウチの環境では復帰に失敗することが多く(モニタの電源のON OFFが高速に切り替わる。明らかに電源回路に悪そう)、怖くて使いづらい。

なので希望の仕様を満たしたものを自分で作りました☆
『MonitorOffTimer』です。
■ダウンロード:MonitorOffTimer105.zip
動作確認環境
・Windows XP SP3 32bit ※「.NET Framework2.0」以上必須(推奨3.5)
・Windows 7 32bit/64bit

「Monitor」「Power」「Off」の組み合わせの名前のソフトがあったので、被らないようにした結果、こんな妙な名前になりました。(こんな単機能なアプリに独自の名前を付けるのもアレですしね)

2つのexeを同梱しています。

・「MonitorOff_closing.exe」
 →実行したらモニタの電源を切って、アプリも即終了
  復帰は普通にマウスを動かしたり、キーボードを叩けばOKです。
 
・「MonitorOffTimer.exe」
 →実行したらモニタの電源を切るまでは上と同じです。

こんなアプリが居残り続けます。
タイマーが有効な限り、120秒間隔でSendMessage(handle, 0x112, 0xf170, 2)を送り続けます。
※モニタの現在の電源状態を判定していないため(面倒だったので)、例え既に電源がOFFになっていても、電源をOFFにするSendMessageを絶えず送り続けます。

当方の環境では特に問題は起きていませんが、この仕様によりお使いのモニタが壊れても、一切責任を負いませんのでご注意ください。

電源OFF状態からマウスで復帰しても、タイマーは有効なままなので、例えば就寝中にウイルスチェックなどのアプリが強制モニタONで立ち上がったり、ネコがマウスを触って不意にモニタがONになった場合でも120秒以内にモニタは再びOFFにされます。
[キーボード操作]
・ESCキー
 →キーボードのESCキーでタイマーが無効に切り替わります。
 ※ESCキー単体が動作するのはMonitorOffTimerのウインドウアクティブ時に限ります。

・Shift+ESCキー
ウインドウがアクティブでなくとも、Shift+ESCキーを押すことでタイマーを無効にできます。
(ホットキーとして登録済み)

※タイマー無効時にESCキーを押せばアプリが終了します。(つまりタイマー有効時にESCキーを2回押すとアプリが終了します
[コマンドラインパラメータ]
オプション機能としてコマンドラインパラメータで動作をカスタマイズすることができます。

・/TIME=任意の秒数(1~86400秒)
 →任意の秒間隔でモニタの電源を切るようになります。
 例:MonitorOffTimer.exe /TIME=600 (10分間隔で切りたい場合)

・/ON
 →起動時にモニタの電源を切らないようになります。(タイマーの秒数が来るまでモニタの電源は切られません)
 例:MonitorOffTimer.exe /ON

・/DELAY=任意の秒数(1~86400秒)
 →起動するまでの待ち時間を指定できます。例えばアプリをマウスでクリックしてからマウスを静止させるまでの間を待たせることができます。無線マウスならこの間に電源を切ってください。
 例:MonitorOffTimer.exe /DELAY=5 (5秒後にアプリを起動させてモニタの電源を切りたい場合)
  MonitorOff_closing.exe、MonitorOffTimer.exe両方に対応しています。

・/LOOP=回数
 →タイマーを何回連続で動作させるか指定することができます。指定回数に達したらアプリは自動的に終了します。
 例:MonitorOffTimer.exe /LOOP=10 (10回モニタの電源をOFFにしたらアプリを終了させる)

各パラメータは複数同時に指定することもできます
例:MonitorOffTimer.exe /DELAY=5 /TIME=600
※MonitorOffTimer.exeのショートカットを作ると、コマンドラインパラメータは設定しやすいです。

【履歴】
■1.0.5 2017/01/22
 ・開発環境をVisual Studio 2017 RCに更新
  (コード部分の修正はありません)

■1.0.4 2015/07/26
 ・コマンドラインパラメータに/DELAY=秒数, /LOOP=回数を追加
  ※/DELAYパラメータはMonitorOff_closing.exe、MonitorOffTimer.exe両方に対応
 ・MonitorOffTimerのUIにモニター消灯までの「残り秒数」を追加

■1.0.3beta 2014/01/13
 ・MonitorOff_closing.exeに「起動→モニタの電源OFF→2秒待機→再度モニタの電源OFF→終了」という処理を仮実装(Ver.1.0.3限定)

■1.0.2 2012/02/18
 ・Google Chromeが起動している環境で正常に動作しない不具合を修正
 ・コマンドラインパラメータの設定を追加
 ・フリーの電球アイコンを指定(EXEサイズが大幅アップ!)

■1.0.1 2010/08/23
 ・一部の文言の修正

■1.0.0 2009/10/30
 ・初版リリース

検索用キーワード:省電力モード
Filed under: Software,日記 — monta @ 18:57