2008-01-19

サスペンド中の電話着信

先日の「Use10Keyのサスペンド機能とRfLedRestrictorの組み合わせで電話終了時にLEDが点灯したままになる」問題の対策を考えています。
 
サスペンド中であっても電話着信があればDenwa.exeは動いてくれます。
このあたりは RunAtや WakeAppで登録するのと同様にシステムイベントとして登録されているのでしょうね。
 
ところがサスペンド状態で電話着信した場合、終了後即座にサスペンドに戻るためRfLedRestrictorがLEDを消す事ができないようです。
更に実はDenwa.exe自体も完全に終了処理が終わってないようで、電話着信が連続した場合に電話を受けられない事がありました。
 
いろいろ調べているとMortScriptのマニュアルで気になる記述を見つけました。
・WM5を載せたPPCの多くで、デバイスは起きてプログラムは走るが、ディスプレイがオフのままで、プログラムが起動された直後にスタンバイ状態に戻る、という問題があります。 時刻指定スクリプトの最初で、ToggleDisplay(ON) を呼び出すようにしておくと、解決できる場合が多いようです。 それでもダメなら、システムアップデートか、レジストリをいじるぐらいしか方法はありません。
 
何となく同じような現象のようですね。
とりあえず同じようなことをしてみるべく、電話着信時に画面をオンにしてみました。
スパイで覗いてみると、電話着信時には denwa.exeに対して WM_USER+562 (WPARAM 0x0ca)が飛んできているみたいです。
if (WM_USER + 562 == msg && 0x0ca == wParam && g_bIsSuspend) {
    // 電話がかかってきた時にサスペンド中だった場合は画面の電源を戻してみる?
    SetSystemPowerState(NULL, POWER_STATE_BACKLIGHTON, POWER_FORCE);
}
 
でもこれだけでは不十分でした。
システムイベントとして起動されたアプリを判別して監視するような事ができればいいのですが...。
やはりサスペンドは問題が多いですね。
 

0 件のコメント: