使用ActiveX控件自动化VB6应用程序

时间:2009-02-13 20:35:27

标签: unit-testing vb6 automation activex

我有一个VB6应用程序,我没有源代码。此应用程序使用第三方ActiveX控件。我想自动化这些ActiveX控件。是否有可能获得IUnknowns或Object引用?对于其中一些,我可以获得底层的HWND,但从我可以看出,没有通用的方法将这些HWND转换为ActiveX控件。

某些测试软件允许您使用ActiveX控件编写VB6应用程序脚本。他们是怎么做到的?

3 个答案:

答案 0 :(得分:1)

这些ActiveX控件是否在单独的DLL中?如果是这样,您可以使用OLE视图(VS 6.0工具)打开DLL并查看所有接口,coclasse等。

答案 1 :(得分:0)

您可以通过Microsoft Research Detours库使用DLL注入。基本上你想要为那些特定的控件挂钩cocreate。您需要非常小心,特别是如果您执行任何跨线程/跨进程(COM线程规则非常重要)。

整个Detours很容易使用......但我从未尝试过使用COM例程。您可能希望查看其他解决方案。

另请注意,Detours对其有一些许可限制,可能会影响您分发它的能力。

测试软件可能只是将相应的WM_XXX消息发送到相关的特定窗口(例如,WM_MOUSEMOVE)。

答案 2 :(得分:0)

很抱歉,但是VB6 EXE不包含拉出它使用的COM对象所需的清单。你最好的选择是尝试一些rbobby的建议,特别是关于发送WM_XXX消息。