Delphi无界面的进程外COM服务器

3

我希望使用Delphi构建一个无需任何可视表单的外部COM服务器,主要目的是为其他Windows服务提供“进程外”处理。

是否可以将COM对象放置在简单的控制台应用程序中?我预期至少需要一些消息处理循环。

我能将它放置在Windows服务中吗?


你试过了吗?有什么不起作用的地方吗? - Rob Kennedy
我已经成功地在标准GUI应用程序中构建了COM服务器。不,我没有在控制台中尝试过。由于我不理解COM通信背后的全部内容,我担心控制台应用程序(没有任何句柄、消息队列等)会遗漏一些东西。我已经在谷歌上搜索过了,只找到了GUI服务器的例子,没有控制台作为容器的例子。你觉得值得尝试吗? - Tom Hagen
2个回答

3
你可以自己处理消息,但是自Windows 2000以来,Windows提供了管理工具中的组件服务工具,它提供了一种选择ActiveX dll并从dllhost.exe进程中运行它的方法,可选择作为NT服务。

如果你真的想要,你可以启动一个普通的exe项目并向其中添加TAutoObject,甚至是NT服务项目,但是需要额外的工作才能正确处理多实例、安全性和并发性。


感谢Stijn提供的链接。我认为这是一个确认COM服务器可以放置在NT服务中的证明。(顺便说一句,这听起来是我目的最合理的解决方案。) - Tom Hagen
用 Delphi 编写的 OPC 服务器实际上是 COM/DCOM 服务器,有一些被实现为服务。因此,是的,Delphi 也可以完成这项工作。 - avra

1

您可以查看SvCom,了解在将DCOM服务器作为服务运行时有何不同,并获得一个完全实现它的库,支持最新的Delphi版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接