B(ug)log

開発とかぼやきとかLINEスタンプとか http://line.me/S/sticker/1245783 職探し中

AutomationElement.FocusedElement が失敗する

u338steven.hateblo.jp

以前上記の記事でふれた WinForms の場合にコントロールの情報取得がうまくいかなかった理由が判明しました。表題の通りです。正確には、AutomationElement.FocusedElement で空の AutomationElementインスタンス(null ではなく、プロパティ値が全て初期値の状態)が取得できてしまうケースがありました。

とりあえず分かったこと

  • AutomationElement.FocusedElement を使用している
  • なんちゃって UI スレッド上で処理している (これが原因っぽい)
  • ワーカースレッド上で実行してみると問題ないっぽい

なんちゃって UI スレッドとは以下の記事の「別 UI スレッド」のことです。

u338steven.hateblo.jp

なんちゃって UI スレッド上だとなんで失敗するかは調べてもわかりませんでした。ウィンドウメッセージとか見ても分からず……。いったい何を取得しようとしているのか。何もない空間を見つめる猫のような奇妙さを感じます。

長時間調査しても原因不明だったので、この件はしばらく放置して様子見します。ワーカースレッド上で実行する分には対処できているっぽいので。