在过去的几天里,我一直试图找出在 vb6 应用程序中为特定控件获取 AutomationElement 的最佳方法。
我最初的做法是使用以下条件进行搜索: new PropertyCondition(AutomationElement.NameProperty, controlName )
我假设这在一个小的测试 VB6 应用程序中正常工作了大约一周。
但几天前我意识到了一些事情......当我将一个 vb6 文本框拖到表单中时,“名称”属性和“文本”属性都设置为“文本 1”
因此,当我使用以下内容进行搜索时: new PropertyCondition(AutomationElement.NameProperty, 'Text1')
它返回正确的元素,但如果我随后将 'Text' 属性设置为 '',则相同的搜索将不会带来任何结果。
问题:有没有人找到一种方法来获取基于 VB6 控件名称的 AutomationElement
我试过的:
- 获取 MSAA 等效界面并查看“名称”属性 - 结果:“” 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
虽然我可以访问演示应用程序,但我不会访问生产应用程序,因为它是由第三方创建的。
我打算从这里做的是根据它们在表单上的位置来获取自动化元素..
谢谢