過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2011/07/03
pcSleep の技術的なお話。

 
pcSleep は Microsoft の Windows API に準じて、実装されています。
 
Microsoft の仕様として ソフトウェアレベルで起床した場合 
ユーザーの入力( マウス、キーボード)が一切無い場合 
 
起床から数分後に 自動的にスリープ してしまいます。
 
このままでは音楽ソフトウェアを実現する事もできません。そこでシステムに、
「まだ眠らないでね」とリクエスト送る API を用いる事で無人状態でも
起床状態を維持することができます。
 
 
しかし次の問題が出てきます。
 
API を使い続けている間は、スリープすることが出来ません。
 
 
今回苦戦したのが「いつ、このリクエストを止めるか」を違和感無く組み込む
です。
 
実装自体は簡単ですが…難しい。
 
ユーザーが入力を起こしたならリクエストを止め、ユーザーが触れない場合は
自身のスリープタイマーが再度有効になったら止めています。
 
あれ…書いてみるとそんなに大した事してないや。
 
  
pcSleep では「スリープ - 起床」の完全無人 永久タスク を実現する事が
できます。永久タスクとは、
 
「スリープ前、プログラム起動」 
「スリープ」
「起床」
「起床プログラム実行」
 
のフローについて人間が一切関わらず、永久に繰り返し行うことが出来るタスク
です。OS の電源設定にて「一定時間後にスリープ」を無効にしていれば、
期待通りに本ツールにて永久起動を繰り返せます。これにより、家に留守に
している間でも、30分に1回音楽を鳴らす、というのも繰り返し可能です。
  ( 「今からx分後にスリープ。その x分後に起床」というスケジューリングにて対応 )
 
Windows XP と Windows vista 以降では、復旧後の API 動作が異なるので、
これはやっかいでした。
 
・WindowsXP は EEEPC、デスクトップPC
・WindowsVista は BTOデスクトップ
・Windows7 は UL20FT, ET2002T
 
上記のプラットフォームにて API 差異を調べ、組み込んであります。
 
 
vet 1.08u からは、過去のバグ fix 含め、安定のソフトウェアとなっています。

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。