代码之家  ›  专栏  ›  技术社区  ›  Tommy Hui

用activex控件自动化vb6应用程序

  •  1
  • Tommy Hui  · 技术社区  · 16 年前

    我有一个没有源代码的vb6应用程序。此应用程序使用第三方ActiveX控件。我想自动化这些ActiveX控件。是否可以获取iunknowns或对象引用?对于其中的一些,我可以得到底层hwnd,但从我所知,没有一种通用的方法可以将这些hwnd转换为activex控件。

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

    3 回复  |  直到 16 年前
        1
  •  1
  •   Piotr Anders    15 年前

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

        2
  •  0
  •   user53794    16 年前

    您可能可以通过Microsoft Research Detours库使用dll注入。基本上,您需要为那些特定控件挂接cocreate。您将需要格外小心,特别是如果您做任何跨线程/跨进程的事情(COM线程规则至关重要)。

    总的来说,绕路是很容易的…但我从没试过用COM程序。你可能想换个解决方案。

    还请注意,绕行对它有一些许可限制,这可能会影响您分发它的能力。

    测试软件很可能只是将适当的wm-xxx消息发送到特定的窗口(例如wm-mousemove)。

        3
  •  0
  •   RS Conley    16 年前

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