对旧的第三方控件使用UI自动化
问题描述:
对于不支持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接口。
谢谢你的回复。它帮助我设置了适当的位置。据我所知,现在要走的路是通讯或编组。我会在解决问题时发布解决方案。 – 2012-02-27 07:54:09