3

是否有开箱即用的方式为不支持 UI 自动化的第三方控件创建 UI 自动化提供程序?

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

谢谢

4

1 回答 1

3

这是可能的,但工作量很大,而且并非在所有情况下都适用。

关键要求是目标控制:

  • 有自己的 HWND,最好有一个众所周知且稳定的类名

  • 具有与来自另一个进程的该控件进行通信的明确定义的方式。使用某些 Windows 消息集的控件(如 Win32 通用控件)属于这一类,像 MS Internet Explorer 控件这样的控件也属于这一类,它公开了一个扩展界面 (IHTMLDocument)。

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

旧的 VB 时代的 ActiveX 控件是一个挑战:如果您可以在窗体上获得一个控件,则可以使用各种 COM 接口导航到该窗体上的其他控件并访问它们的属性。但问题是你不能轻易地从另一个进程中做到这一点。这些 ActiveX 控件中几乎没有(如果有的话)支持任何类型的 Windows 消息,因为它们假定客户端代码将使用 COM 接口。

于 2012-02-22T20:04:11.310 回答