【问题标题】:Automating VB6 application with ActiveX controls使用 ActiveX 控件自动化 VB6 应用程序
【发布时间】:2023-03-14 20:23:01
【问题描述】:

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

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

【问题讨论】:

  • 您是在尝试自动化 VB6 应用程序,还是只是尝试访问 ActiveX 控件并从您的程序中运行它们?

标签: unit-testing vb6 automation activex


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您也许可以通过 Microsoft Research Detours 库使用 DLL 注入。基本上,您希望为这些特定控件挂钩 cocreate。你需要非常小心,尤其是当你做任何跨线程/跨进程的事情时(COM 线程规则非常重要)。

    总的来说,Detours 很容易使用……但我从未尝试过使用 COM 例程。您可能想查看不同的解决方案。

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

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

    【讨论】:

    • 我目前正在使用 WM_XXX 消息,但您可以对它们执行的操作是有限的。我将尝试 DLL 注入路线。谢谢。
    【解决方案3】:

    很抱歉,VB6 EXE 不包含提取它使用的 COM 对象所需的清单。您最好尝试一些 rbobby 的建议,尤其是关于发送 WM_XXX 消息的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多