ここ数日間、vb6 アプリケーションで特定のコントロールの AutomationElement を取得する最良の方法を見つけようとしてきました。
私の最初の方法は、次の条件で検索を行うことでした: new PropertyCondition(AutomationElement.NameProperty, controlName )
私は、これが小さなテスト VB6 アプリケーションで約 1 週間正しく機能していると仮定していました。
しかし、数日前に気付きました... vb6 テキストボックスをフォームにドラッグすると、'Name' プロパティと'Text' プロパティの両方が 'Text1' に設定されていました。
したがって、次のように検索すると、 new PropertyCondition(AutomationElement.NameProperty, 'Text1')
正しい要素が返されますが、次に行って 'Text' プロパティを '' に設定すると、同じ検索では何も返されません。
質問: VB6 コントロール名に基づいて AutomationElement を取得する方法を見つけた人はいますか?
私が試したこと:
- MSAA と同等のインターフェイスを取得し、'Name' プロパティを確認する - 結果: '' http://msdn.microsoft.com/en-us/library/windows/desktop/dd318490%28v=vs.85%29.aspx
- 他のプロパティ (AutomationId、RuntimeId) に基づいてコントロールを取得する - 結果: AutomationId - すべてのコントロールがこのプロパティを使用できるわけではないようです - RuntimeId - アプリが実行されるたびに変更されます
- 私は多くの異なるサイトを見てきましたが、主なものは以下にリストされています.
http://blogs.msdn.com/b/brianmcm/archive/2006/01/17/getting-the-winforms-id-of-a-control.aspx
デモアプリにはアクセスできますが、サードパーティによって作成された本番アプリにはアクセスできません。
ここからやろうとしていることは、フォーム上の位置に基づいて Automation 要素を取得することです..
ありがとうございました