AutomationElement.FocusedElement が失敗する
以前上記の記事でふれた WinForms の場合にコントロールの情報取得がうまくいかなかった理由が判明しました。表題の通りです。正確には、AutomationElement.FocusedElement
で空の AutomationElement
のインスタンス(null ではなく、プロパティ値が全て初期値の状態)が取得できてしまうケースがありました。
とりあえず分かったこと
AutomationElement.FocusedElement
を使用している- なんちゃって UI スレッド上で処理している (これが原因っぽい)
- ワーカースレッド上で実行してみると問題ないっぽい
なんちゃって UI スレッドとは以下の記事の「別 UI スレッド」のことです。
なんちゃって UI スレッド上だとなんで失敗するかは調べてもわかりませんでした。ウィンドウメッセージとか見ても分からず……。いったい何を取得しようとしているのか。何もない空間を見つめる猫のような奇妙さを感じます。
長時間調査しても原因不明だったので、この件はしばらく放置して様子見します。ワーカースレッド上で実行する分には対処できているっぽいので。