100 を超える多くの要素を持つリスト (コンボボックスの標準) を含む ComboBox があります。特定のエントリを見つけて選択したいと考えています。エントリを見つけるために、特定のパターンを各要素の名前と比較します。
パフォーマンス上の理由 (100 を超える要素) から、すべての子のスコープを持つ親で CacheRequest を使用しているため、すべての子を適切かつ非常に迅速に調べて、選択したい子の正しいインデックスを見つけることができます。
ここで問題が発生します。必要な正しいインデックスがあり、キャッシュされた AutomationElement もありますが、CacheRequest で AutomationElementMode.None を指定したため (パフォーマンスに影響があるかどうかをまだテストする必要があります)、そうではないようです。キャッシュされた要素を、将来の呼び出しに使用できる要素 (「ライブ」要素) に変換できます。
NativeWindowHandle経由で変換してみました(AutomationElement.FromWindowHandleという関数があるので)が、ハンドルが0らしいのでこれは仕方ありません。
また、キャッシュされたSelectionPatternをまだ使用しようとはしていません.ComboBoxesはカスタムビルドされることがあるため、すべての場合に機能するかどうかはわかりません.
child-index があり、キャッシュできるすべての値を取得できます。キャッシュされた要素の動作中/ライブの AutomationElement を取得するにはどうすればよいですか?
ありがとうアンドレアス
(Windows 7 64でwin32アプリケーション(自動化ターゲットとして)でC#を使用しますが、大きな違いはありません)