2009-02-13 84 views
1

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

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

+0

您是否尝试自动化VB6应用程序,或者您是否试图访问ActiveX控件并从你的程序运行它们? – jdigital 2009-02-13 22:06:34

回答

0

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

整体Detours很容易使用......但我从来没有用COM例程试过它。你可能想看看不同的解决方案。

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

测试软件可能只是发送适当的WM_XXX消息到有问题的特定窗口(例如WM_MOUSEMOVE)。

+0

我目前使用WM_XXX消息,但是你可以用它们做什么是有限的。我将尝试DLL注入路由。谢谢。 – 2009-02-14 05:59:50

0

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

1

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

相关问题