2007年10月08日

Today画面からの発着信履歴表示

esやAd[es]ではToday画面で左右のキーを押すと,発信履歴,着信履歴が表示されるそうです.
これが,技術的にどのようにして実現されているのか,微妙に気になります.

Today画面で左右のキーを押したら,現在選択されているTodayPluginに左右のキーが押されたことが通知され,そのPlugin内でイベントが処理されるのが普通です.

どのTodayPluginが選択されていたとしても,問答無用でキーイベントを横取りし,自前の処理を行う(この場合 履歴の表示)ためには,かなり特殊なことを行う必要があると思われます.

予想としては2つあります.


■ 予想 1.キーボードドライバ側で特殊な処理を入っている

キーボードドライバ(d2keybd.dll, shkeybd.dll)側に以下のような処理が入っている.

 ・左右のキーが押されたとき,Today画面表示中ならば,電話アプリへ履歴の表示を要求.
 ・左右のキーが押されたとき,Today画面表示中でなければ,通常のキーコードを発行.


■ 予想 2. Today画面(DesktopExplorerWindow)のサブクラス化

リモートスパイ++で見ると分かると思いますが,各々のTodayPluginの一行ごとにウィンドウが存在します.
そのウィンドウの親の親の...と遡って,トップレベルウィンドウがDesktopExplorerWindowです.

DesktopExplorerWindowをサブクラス化し,左右のキーが押された・離されたメッセージを独自に処理してしまえば,各子ウィンドウであるTodayPluginへ処理が移らず,希望した内容が実現できます.


多分,予想2.が正解なような気がしますが...

posted by ori at 15:40| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。