私はVS2008でC#.NETアプリケーションに取り組んでおり、別のサードパーティアプリケーションでフォームへの入力を自動化しています(ソースへのアクセスなし)。私のアプリケーションは UIAutomationClient クラスを使用して、フォームの要素にフォーカスしたり、要素を選択したりします。私が直面している問題は、操作する必要のあるオブジェクトの一部が、フォーカスがある場合にのみ表示されることです。たとえば、現在アクティブな要素がリストである場合にのみ、リストからアイテムを選択できます。これに対する私の回避策は、探している要素が存在するまで「タブ」を送信することでした(フォームに何百もの要素がある場合があります)。技術的には機能します...しかし、要素を表示するためのよりエレガントな方法が必要です。
同様に、私は UISpy、Inspector、および Spy++ (32 または 64) を使用してオブジェクトを識別していますが、これらはアクティブなときに一部の要素しか識別できません。フォーカスを失うと、ツリーに表示されなくなります。これは、これらのアプリケーションが同じ HWND 検索方法を使用して開発された可能性が高いためだと思います。
私の質問は、UIAutomation はこれらの非アクティブなオブジェクトを識別できますか? それらを公開して実用的に識別できるフックまたは代替クラスはありますか?
ありがとう、