我打算将 COM 接口添加到现有应用程序(顺便说一下,它是使用 Win32 用 C++ 编写的)。我有一些使用COM 对象的经验,所以我知道接口等基本 COM 概念,但这是我第一次真正实现组件。
最终,我希望能够使用 COM 接口通过 VB 等脚本自动化我的应用程序。我知道有两个步骤:
- 我的应用程序必须充当进程外服务器(即我必须使用 MIDL 并为代理 DLL 和存根 DLL 生成代码)。
- 拥有服务器后,我可以通过实现 IDispatch 接口来添加自动化功能。
由于带有 MIDL 的服务器在一个 EXE 中以及其他的东西已经有点陡峭,我想在继续 IDispatch 之前先掌握所有这些。
我正在阅读 Dale Rogerson 的《Inside COM》一书,并完成了关于 EXE 中服务器的章节(下一章将介绍自动化)。
“EXE 中的服务器”一章提供了实现服务器和客户端的示例代码。但是需要手动启动服务器。这让我很困惑。显然,当客户端进程使用我的应用程序(= 服务器)时,不需要这个额外的手动步骤。是否没有自动启动服务器的机制?或者是否需要自动化来实现这一目标?目前,不得不手动启动我的服务器(一旦我有一个)的前景让我怀疑我是否朝着正确的方向前进。
希望对此有更多了解的人可以看到我缺少哪些信息并为我指明正确的方向。