私はアクティブアクセシビリティフレームワークを使用して、特定のプログラムのすべてのコントロールを列挙しています。問題は、私がコントロールのツリーをたどると、エクスプローラやビジュアルスタジオのような複雑なアプリケーションには永遠にかかるということです。シンプルなアプリケーションは約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. SharePoint 2010ワークフローActive Directoryグループ列挙型?
- 5. 列挙可能なWindowsコントロールを指定するインターフェイスとは何ですか?
- 6. Javaのenum継承:何とかenumのtoString()メソッドを共通のスーパークラス/列挙型に抽出できますか?
- 7. Doctrine列挙型で列挙されていない値を追加することはできませんか?
- 8. 新しい列挙型メンバを追加することはできますか?列挙型として列挙型を列挙するときにNewtonsoft jsonと中断しないでください。
- 9. Microsoft ReportViewer Webコントロールをxcopy展開することはできますか?
- 10. 助けを借りてandroidで配列を使用する
- 11. .Net 3.5:Microsoft Interactive Chartコントロールはどこで見つけることができますか?
- 12. jQuery - 誰でも私を助けることができます...?
- 13. C#でActive Directoryユーザーのプライマリグループを見つけることはできますか?
- 14. EF 5に列挙型を文字列として格納することはできますか?
- 15. vimでタブを列挙するには?
- 16. コンセンサス配列の助けを借りて
- 17. 列挙型はモデルと見なされるべきですか?
- 18. オンラインブックシェルフで私を助けることができる人は誰ですか?
- 19. PowerShellオブジェクトのプロパティを列挙すると、
- 20. 助けを必要とするPHPの配列を再構築
- 21. RustにC列挙型をラップすることはできますか?
- 22. * FIXED * PHP配列に適していますか?助けて!
- 23. Microsoft Word文書コントロールがキャリッジリターンを受け付けない
- 24. InstallUtilツールの助けを借りてWindowsサービスをインストールすることができません
- 25. は誰もが私を助けることができれば、私は思っていた多次元配列
- 26. データベースに列挙された列挙型をドキュメントの形式として保持するのがベストプラクティスですか?
- 27. 私は文字列フォーマッタを改良するのに助けが必要です
- 28. フレーズを列挙できますか?
- 29. プロトタイプを使用するときにJavaScriptで列挙を停止する
- 30. 列挙子は、tryが簿価に対処するために独自の列挙子をキャストするときに私はエラーが備わってい