私はアクティブアクセシビリティフレームワークを使用して、特定のプログラムのすべてのコントロールを列挙しています。問題は、私がコントロールのツリーをたどると、エクスプローラやビジュアルスタジオのような複雑なアプリケーションには永遠にかかるということです。シンプルなアプリケーションは約2秒かかりますが、大量のコントロールを含む大きなアプリケーションは10秒かかります。誰でもこれを体験できますか?私はまた、プロセス中でMSAAを使用することについていくつかの言及を発見しました。これは何を意味するのでしょうか?Microsoft Active Accessibilityは、コントロールを列挙するときにスーパークラスです。助けて!
2
A
答えて
2
まず最初に、「ツリー」に「サイクル」が存在することがあるため、再帰的にトラバースするときに注意してください。オブジェクトを確実に比較して、既にこのオブジェクトにいたかどうかを確認できません。
アクティブアクセシビリティが非常に遅い主な理由は、再帰的に横断されるとは考えられず、ただ1つの要素(カーソルの下)またはその子要素の詳細を表示することです。すべてのAAリクエスト(すべてのプロパティ用)は、コンテキストをターゲットアプリケーションに切り替えて、再び元に戻す必要があります。あなたがすべてのあなたのUIオブジェクトに添付された説明がたくさんあります)を正しく実行しているならば、数千のオブジェクトがあります。
あなたが何か特定のものを探しているならすべてのコントロールをトラバースするのではなく、直接リクエストする方が簡単かもしれません。または、あなたが知っている他のプロパティを持つHWNDにしか見えないオブジェクトのいくつかの種類を探しているならば、最初にすべてのHWNDを列挙してからAccessibleObjectFromWindow
を呼び出すほうがはるかに高速です(トップレベルのウィンドウでは機能しません子ウィンドウ用)。子を列挙するときは、HWNDプロパティが変更されるとすぐに停止することができます。
これらのサイクルの1つに実行されるのを避けるために、再帰深度のいくつかのハード最大カウンタを追加します。
関連する問題
- 1. Microsoft Active Accessibility in C#
- 2. Microsoft Active Accessibilityを使用してコントロールが表示されているかどうかを確認する方法
- 3. Silverlightですべての入力コントロールを列挙する方法
- 4. 列挙可能なWindowsコントロールを指定するインターフェイスとは何ですか?
- 5. Swiftでスーパークラスのスーパークラスをクラス分けする方法は?
- 6. SharePoint 2010ワークフローActive Directoryグループ列挙型?
- 7. Javaのenum継承:何とかenumのtoString()メソッドを共通のスーパークラス/列挙型に抽出できますか?
- 8. 配列をコントロールにマッピングするときに重複するコードを避ける
- 9. Microsoft ReportViewer Webコントロールをxcopy展開することはできますか?
- 10. Doctrine列挙型で列挙されていない値を追加することはできませんか?
- 11. 新しい列挙型メンバを追加することはできますか?列挙型として列挙型を列挙するときにNewtonsoft jsonと中断しないでください。
- 12. .Net 3.5:Microsoft Interactive Chartコントロールはどこで見つけることができますか?
- 13. 助けを借りてandroidで配列を使用する
- 14. C#で公開列挙値を制限することはできますか?
- 15. フィルタを使用して列挙型の列挙列を列挙する
- 16. Microsoft Azure Active Directory Passport認証
- 17. Microsoft Azure Active Directory Exchangeオンラインカスタムアプリケーション
- 18. Microsoft Active Directory認証シングルテナント "Live.com"
- 19. Javaコードで私を助けることができます
- 20. jQuery - 誰でも私を助けることができます...?
- 21. Amazon SSOとMicrosoft Active Directory(施設内)
- 22. Microsoft Azure Active DirectoryクラウドとオンデマンドAD
- 23. SSISは、紺碧のDWHにここに助けることができる
- 24. C#でActive Directoryユーザーのプライマリグループを見つけることはできますか?
- 25. vimでタブを列挙するには?
- 26. EF 5に列挙型を文字列として格納することはできますか?
- 27. 誰かが私を助けることができますか?
- 28. オンラインブックシェルフで私を助けることができる人は誰ですか?
- 29. 列挙型はモデルと見なされるべきですか?
- 30. は、ページロード中にPHPの実行を助けることができます