/ 最近 .rdf 追記 編集 設定 本棚

脳log[20051103] Windows XP: モニタを省電力モードにするRubyスクリプト | [文庫] 葉山 透【9S(ナインエス) (電撃文庫)】 アスキー・メディアワークス



2005年11月03日 (木)

最終更新: 2010-07-05T11:01+0900

Windows XP: モニタを省電力モードにするRubyスクリプト

電源ボタンが遠くて遠くて。ってそんなわけはないけど。

require 'Win32API'

MB_OK = 0;
MessageBox  = Win32API.new('user32', 'MessageBoxA', %w(p p p i), 'i');
FindWindow  = Win32API.new('user32', 'FindWindowA', %w(p p), 'l');
PostMessage = Win32API.new('user32', 'PostMessageA', %w(l l l l), 'l');
WM_SYSCOMMAND    = 0x0112;
SC_MONITORPOWER  = 0xF170;
MonitorPowerSave = 1;
MonitorPowerOff  = 2;

# 1 必ず起動しているだろうエクスプローラのウィンドウを探して、
hwndExplorer = FindWindow.call(0, 'Program Manager');
if hwndExplorer == 0
	MessageBox.call(0, '(>_<) failed to find some window to send WM_SYSCOMMAND(SC_MONITORPOWER).', $0, MB_OK);
	exit;
end

# 2 DefWndProc()を代わりに呼んでもらうことで省電力モードに移行する。
sleep(1); # おまじない。一瞬で復帰することが少なくなる、かも。
PostMessage.call(hwndExplorer, WM_SYSCOMMAND, SC_MONITORPOWER, MonitorPowerOff);
  • 関数のパラメータの型を指定する 'l'(long) とか 'p'(pointer) とかかなり適当だけど動いてるのな。
  • マウスが動いただけで復帰するのが困りもの。
  • MessageBoxW()を使うとスクリプトの文字コードに関係なく文字化けするのは何故?
  • MessageBoxA()を使うとスクリプトの文字コードに関係なく正しく表示されるのは何故?
  • ↑スクリプトの文字コードに注目するのが間違い?
  • 一瞬で復帰してしまうことも多い。

[][][文庫] 葉山 透【9S(ナインエス) (電撃文庫)】 アスキー・メディアワークス

こいつは熱い。序盤からぐんぐん読ませてくる。天才の遺したオーバーテクノロジーを使ったバトルに、監禁された戦闘美少女。平凡に見えて秘めた実力を持つ主人公。萌えも忘れていない。

  • 弱点は自分に向けられた好意・思いやりが分からないこと。超人的な頭脳と洞察力で戦闘では他者の動きや思考を読んで先んじるのに、そっち方面は経験がないため極端に鈍くなる。
  • ツンツンした喋りはいつデレに変わるのか。
  • ぱんつはいてない属性装備。(注: イラストがあるわけではない)

エンターテイメントとして完成された出来栄え。