2011-05-13 221 views
1

简而言之:我有一个包含按钮的ActiveX控件的VB6表单,并且我想创建一个可以使用C#单击这个按钮的自动工具。 我试图使用反射来解决这个问题,但我无法访问表单。 我建议的一般方向是使用窗口API来访问表单,但它看起来非常“昂贵”的解决方案。获取ActiveX对象属性

有没有人熟悉这个主题? 谢谢

+0

这无疑是另一个进程拥有的控件。是的,这将是昂贵的,你将不得不花费大量的时间学习Windows API。您不能直接访问控件,只能访问它创建的窗口。有些不是,特别是VB6的。从Spy ++开始,看看有什么。 – 2011-05-13 23:23:09

回答

0

您能否使用.net的AutomationElement

为了测试这个:

  1. 下载从这个question

  2. 采取UiSpy.zip链接获取的形式开放,激活悬停模式。如果你“看到”按钮,它应该很容易使用] AutomationElement实际上发送一个点击。

+0

我会试一试。谢谢您的回答 – 2011-05-18 07:36:09

0

如何发送/挂钩窗口消息(例如发送WM_MOUSEDOWN或WM_MOUSEMOVE)?简短/简单的例子可以在here找到。

+0

这个解决方案对我来说并不好,因为我也想访问ActiveX对象,以便获得它的属性 – 2011-05-13 22:21:05

+0

所以我们不是只谈论点击按钮吗?还是仅仅是挑选下拉值或将文本放入输入框?你应该把这个添加到你的问题中(你到底想要做什么)。 – Mario 2011-05-13 22:26:51

+0

第一步也是最需要的一步是根据像素位置执行按钮单击(而不是触发单击事件),但我想知道如何处理其他控件(组合框,网格等)。 – 2011-05-18 07:38:45

0

如果你的目标是为自动化测试的UI,我就从SmartBear软件,该软件可以直接访问你的VB6的形式,控件和属性建议TestComplete。它们基本上挂钩了进程并访问“Forms”对象和“Screen”对象以访问加载的表单。

+0

谢谢您的回复。我的问题的基础是,我想在我自己的专用框架中替换当前的自动化工具(QTP)。由于我正在测试我公司的应用程序,因此我不需要像TestComplete或QTP那样的通用工具。 – 2011-05-18 07:33:15