ロック画面に情報を載せる

[戻る]

最近少し仕事が忙しく, なかなか本来の仕事用 PC の前に座れません. 下手すると 2〜3 週間電源が入りません. それだけ長いことほったらかしになると困るのが Windows update やウィルスの定義ファイルです. 以前書いたように仕事用 PC は検疫システムが入っていて, 最新じゃないと更新用サイト先以外のサーバには繋がらないのです. 下手すると二時間くらいダウンロードと再起動を繰り返し, 朝出社しても昼前にやっとメールが読めるようになります.

留守の間も定期的に PC の電源を入れたくなるのは人情でしょう. 仕事場に居る誰かにお願いして電源を入れてもらっています. すると

  1. OS がブートした後自動ログインでスクリプトが走る
  2. 検疫システムをパスするため, 自動ログインを解除する
  3. さすがにそれだけじゃやばいのですかさずロック画面にしてモニタ電源を切る
  4. 検疫システムがパスしてネットワークが繋がったタイミングでネットワークドライブの再接続をする
とかいったことを行わせてます. ログイン状態なので諸々のアップデートが勝手に行われるのです. ここで問題なのはシャットダウンです. はじめは起動同様, 仕事場に居る誰かに電源ボタンを押して シャットダウンさせてもらおうと考えていたのですが, どうも画面ロック中に電源ボタンを押しても PC が落ちません. かと言って下手にタスクに入れると, 出社して PC を触っている最中にシャットダウンが始まってしまいます.

というわけでこんなツールを作りました. 起動すると 20000 秒 (=5 時間半強) 後にシャットダウンするというものです. 「中止」ボタンを押すと止まりますから, 出社した際はロック画面をはずして「中止」すればいいわけです. 他にもつぶしが利くようシャットダウンまでの秒数は引数で設定できるようにしていますが, あまり非常識な設定できないようにしています.

さてこういう環境を整えて時折外部から起動をお願いすると, 今度はリモートデスクトップで入ってファイル類を取り出したくなるときがあります. リモートデスクトップで入るためには IP アドレスが必要ですが, DHCP で割り振られるため幾つが割り当てられているか分かりません. 画面はロックかけてますので, 仕事場に居る誰かにお願いして聞きだすこともできません. どうしようか考えて思いついたのが壁紙です. 壁紙はロック画面になっても変わりません. すなわち

  1. 時限シャットダウンプログラムを起動する
  2. 割り振られた IP アドレスを調べ画像化する
  3. 6. で作った画像を壁紙にする
という手順を踏めばいいはずです.

このためまず 6: bmp ファイルに文字を貼り付けるツールを作りました. これを使って

for /F "delims=: tokens=1,2 " %%i in (' ipconfig ^|find /i "ip address" ') do @set ip=%%j
X:\path\bmpaddchar.exe 10 10 %ip% X:\path\wallbase.bmp
といった風に書くと (パスは適当に書き換えてください), 一行目で割り振られた IP アドレスを抽出し, 二行目で wallbase.bmp に IP アドレスを加えて wallbase_C.bmp というファイルを作ります. bmpaddchar.exe の第一, 第二引数は加える文字の位置, 第三引数は文字の内容, 第四引数はベースとなる bmp ファイルのパスです. 結果はベースとした画像名に _C が付いたファイルとなります.

一見すごく汎用的なプログラムそうですが, クラシックスタイルのスタンダード配色に合わせて作ってますので, それ以外はほとんど使えないと思います. 文字も数字とピリオドくらいしか対応してませんし… 「使えん」と思った場合は, まあ適当なツールを使ってください. 「使えない」と言えば IP アドレスを抽出する一行目も, アダプタが複数あれば最後に表示されたものを採用します. 特定のアダプタに割り振られた IP アドレスが知りたいのであれば, これまた適当なツールを探してください.

最後に 7: 壁紙を貼り付けるツールも作りました. 上記フレーズだと, その後に

X:\path\wallpaper.exe 10 10 X:\path\wallbase_C.bmp
とでもかけば, 画面左上に文字が現れるはずです. 第一第二引数が壁紙の位置, 第三引数が bmp ファイルです.


2012.9