2007-11-08

電波状態LEDの制御 その2

2chのソフトスレから「パケット通信中だけ LED表示したい」という話が聞こえてきました。
別の人が RfLedを紹介してくれていたのですが、単にLEDを点灯させるだけの RfLedは趣旨が違いますね。
(でも、作った本人も忘れかけているようなソフトの名前を出していただいてありがとうございます)
 
という訳で、パケット通信中だけLEDを使用するアプリを作ってみました。  
最初「パケット通信中かどうかを判断してパケット通信中であればLEDを使用するようにすればいいだけ」と思って作り始めたのですが、 LEDの使用・未使用を切り替えるために HKEY_CURRENT_USER\ControlPanel\Utility\RFIndicatorを変更しても動作を切り替えることができずに行き詰ってしまいました。
 
いろいろ調べた結果、電波状態LEDの切り替えは "RFindicator"というイベントをセットしてやらないと有効にならないとの事。
そんなのどうやって調べろと...
 
何でも実際に手を動かしてみると勉強することがたくさんあるものですね。
 
 
(追記)
esで動かないという話があったのですが、WM6からの機能(RegistryNotifyCallback)を使っていたので WM5用にはビルドできませんでした
RegistryNotifyCallbackは WM5でも使えました。WM5 SDKを入れるとビルドできるみたいです。
とりあえずソースだけアップしておきますので、誰か修正お願いします。
 

5 件のコメント:

匿名 さんのコメント...

初めまして、eXarchと申します。
黒Adにて正常に動作しております。
ところで、通信中に点灯するランプを一定間隔で点滅させることは出来ないでしょうか?
海外のスマートフォンでよくある仕様なので真似てみたいのですが、技術的に可能でしたら是非ともよろしくお願いいたします。

tnj さんのコメント...

便利なツールとソースの公開ありがとうございます.で,早速なのですが少々修正させていただきました.変にブランチを切ってしまうのもよくないので,こちらにもご報告という形でフィードバックさせていただきますね.

http://nothing.sh/temp/RfLedRestrictor_mod.zip

まず,常に常駐させなくてもいいように,ダイヤルアップ接続時のみ,自動起動するように修正しています.それから, GetPhsConnection() のレジストリ参照先が HKCU になっていて,起動時に接続されていてもランプが点灯しないという不具合があった点を修正しています.というより,その辺の定数を snapi.h で定義されている定数に置き換えさせて頂きました.
上記の修正を加えたものを, Windows Mobile 5.0 Pocket PC SDK でビルドしています. diff も同梱していますので,適宜 merge して頂ければ幸いです.では.

kazuaki さんのコメント...

こんばんは。 コメントありがとうございます。

eXarchさん>
動作報告ありがとうございます。
点滅させるとなると、電界強度表示アプリにニセ情報を掴ませるか LEDの使用・未使用を切り替えることになるでしょうか。

一度試してみます。


tnjさん>
修正・アドバイスありがとうございます。
RegistryNotifyAppの使い方はじめて知りました。ソース公開してよかったです。

頂いたソースは早速マージさせて頂きますね。

tnj さんのコメント...

ありがとうございます.
今更よく考えてみたら, RegisterNotifyApp で起動された時に点灯・消灯を切り替えれば済む話なので,接続中も常駐する必要はなかったですね.うかつでした.
(以前の設定を覚えておいて終了時に戻す処理が雑多になりますが,このツールを使う目的を考えれば,そもそもその処理は不要かもしれません)

kazuaki さんのコメント...

tnjさん こんばんは。

頂いたソースを見ながら勉強させて頂きました。

tnjさんの言われる通り接続中の常駐は不要と思ったので、RegisterNotifyAppで起動したときに点灯・消灯を切り替えるように改めました。
でも、その後で eXarchさんに頂いた要望を考えていると やはり接続中の常駐は必要ということに(笑

どちらも捨てがたいので 通常は常駐なし、点滅オプション時は常駐ありという事にしました。
またお気づきの点があればご指摘ください。


eXarchさん>

という訳で、かなり無理矢理な感がありますが 一応点滅するようになりました。
eXarchさんのイメージされているものに近づけたでしょうか?