情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

ThinkPad X301の明るさ調節ができなくなる原因を調べてみた(未完)

ThinkPad (30) ThinkPad X301 (5) Windows (498)

スリープや休止状態から戻ったときに、ThinkPad X301の明るさ調節機能が使えなくなることが希に発生します。今回は、この明るさ調整機能について、いろいろ調べてみました。

※この記事は書きかけですが、今後続きを書く可能性が低いです。しかし、途中まででも役に立つと思われるため、現在の版を公開します

症状

  • モニタが暗く、Fn+HomeやFn+Endで明るさを調整できない。
  • Windows モビリティー センターに明るさ調整表示されない。

発生タイミング

  • スリープ・休止状態から復帰したとき
  • モニタを閉じて開き直したとき

その場しのぎの直し方

実は直し方はわかっていて、一旦ノートPCの画面を閉じて、もう一度開き直すと復活します。

関連しているプロセスを探してみる

単純にホットキー(Fn+Home、Fn+End)が動作しないだけならBIOSの画面でも動作するので、プロセスやドライバはあまり関係ないのかもしれないのですが、問題が発生しているときにモビリティーセンターの明るさ調節画面が表示できないことから、怪しいプロセス探しをやってみます。

正常な状態に戻す

その前にとりあえず正常に動作している状態に戻します。ノートPCを閉じてからもう一度開き直すだけです。

Spy++で明るさ表示を担当プロセスを探す

明るさを変更したときに表示される緑色の「明るさバー」を表示しているプロセスを、Spy++で見つけ出してみます。

「ウィンドウ検索」で明るさバーのウィンドウハンドルを取得してみると、

  • ハンドル:00020256
  • キャプション:tpvolbar
  • クラス:TpHotkeyOnscreen
  • スタイル:84000000
  • 矩形:(0,815)-(1440, 870) 1440x55

が見つかります。

するとプロパティインスペクタから、プロセスID(00001254)、スレッドID(00001258)、モジュール名(TPONSCR)が得られました。このプロセスIDは16進数で0x4692なので、タスクマネージャから、正体がわかります。

タスクマネージャ

PIDが4692のプロセスを探すと、「TPONSCR.exe」が見つかります。 説明には「On screen display drawer」とあります。 また、近くには「TPOSDSVC.exe」というプロセスがあり、説明には「On screen display message generator for ThinkPad」とあります。このどちらかが問題の原因だと思われます。

明るさ調節担当プロセスについて

TPONSCR.exe

  • 説明:On screen display drawer
  • イメージパス名:C:\Program Files\Lenovo\HOTKEY\TPONSCR.exe
  • コマンドライン:"C:\Program Files\Lenovo\HOTKEY\TPONSCR.exe"

TPOSDSVC.exe

  • 説明:On screen display message generator for ThinkPad
  • イメージパス名:C:\Program Files\Lenovo\HOTKEY\TPOSDSVC.exe
  • コマンドライン:"C:\Program Files\Lenovo\HOTKEY\TPOSDSVC.exe"

これで一旦プロセスを止めても、元に戻れそうな気がします

TPOSDSVC.exeを停止してみる

というわけで、「TPOSDSVC.exe」をWindowsタスクマネージャで停止してみます。

結果

停止してみた結果、ちゃんと明るさ調整はできました。ただし、明るさバーが表示されませんでした

このことから、「明るさ調節ができなくなっていた原因はTPOSDSVC.exeの不具合によるものではなさそうだ」と予測できます。

ここでよくよく考えてみると、二つのプロセスはどちらも表示だけを担当しているのではないかと予想できます。たしかに、説明がそれだけだったので。

Fn+Homeキーを押したときについて

今度は全く別のことを調べてみました。AutoHotkeyでどんなキーコードが送られているか調べてみると、Fnキー単体では仮想キー:FF、スキャンコード:163が表示されるものの、Fnを押しながらHomeを押しても何も表示されません。

同時押しはキーボードからの入力としてではなく、特殊な入力として扱われているようです。

そもそもフックしているDLLの正体を見つける方法がわからないので、どちらにせよ別の方法を探すことに

TPHKSVC.exe

さきほど「TPONSCR.exe」と「TPOSDSVC.exe」が怪しいとにらみましたが、タスクマネージャでシステムのプロセスも表示してみると、説明が「On screen display Fn+Fx handler」になっている「TPHKSVC.exe("C:\Program Files\LENOVO\HOTKEY\TPHKSVC.exe")」というプロセスが。

落としてみる

これをタスクマネージャから落としてみました。しかし、全く問題なく明るさを調節できました。On Screen表示も健在です。これは無関係のようでした。

他のプロセスも落としてみる

こうなればしらみつぶしと言うことで、怪しいプロセスをどんどん落としてみることに。

LenovoMobilityCenter.exe

  • コマンドライン:"C:\Program Files\Lenovo\MBLCTR\LenovoMobilityCenter.exe" -Embedding
  • 説明:Windows Mobility Center Extensible Tiles

これはいかにもモビリティーセンターの明るさ表示が消えてしまったことと関係がありそうです。しかし、落としてみても全く問題なく明るさの調節ができ、モビリティーセンター(mblctrl.exe)を起動してみると復活するということがわかりました。

書きかけここまで

コメント(0)

新しいコメントを投稿