编程语言
首页 > 编程语言> > c#-将UI自动化用于旧的第三方控件

c#-将UI自动化用于旧的第三方控件

作者:互联网

是否可以使用现成的方法为不支持UI自动化的第三方控件创建UI自动化提供程序?

我的问题:我尝试使用VsFlexGrid ActiveX控件自动化vb6应用程序,但无法访问其属性和方法.

谢谢

解决方法:

它是possible, but it’s a lot of work,并不适合所有情况.

关键要求是目标控件:

>具有自己的HWND,最好使用众所周知且稳定的类名
>具有明确定义的从另一个进程与该控件进行通信的方式.使用某些Windows消息集的控件(例如Win32通用控件)属于该类别,而诸如MS Internet Explorer控件之类的控件则具有广泛的接口(IHTMLDocument).

但是,如果控件没有某种方式可以从外部访问其信息,则UI自动化将无济于事:UIA在这里所做的所有事情都是允许您将适配器类插入其现有框架中.但这并没有为您提供任何新的或额外的工具来处理基础信息.

VB时代的旧ActiveX控件是一个挑战:如果您可以在窗体上找到一个控件,则可以使用各种COM接口导航到该窗体上的其他控件并访问它们的属性.但是要注意的是,您不能轻易从另一个过程中执行此操作.这些ActiveX控件中几乎没有(如果有的话)支持任何类型的Windows消息,因为它们假定客户端代码将改用COM接口.

标签:activex,ui-automation,gui-testing,winapi,c
来源: https://codeday.me/bug/20191201/2082817.html