调用德尔福 DCOM

Posted

技术标签:

【中文标题】调用德尔福 DCOM【英文标题】:Call Delphi DCOM 【发布时间】:2015-07-07 00:08:50 【问题描述】:

我对 Delphi 和 DCOM 完全陌生。我被分配了修改旧的 Delphi 项目的任务。我能够进行更改并构建 .exe。我正在使用 Delphi 7 IDE。

由于某种原因,我们需要旧版本和新版本同时在同一台服务器上运行。

我所做的是,构建了新版本,我们称之为delphiapp_original.exe,将其重命名为delphiapp_new.exe。我们运行应用程序的方式是这样的:

callerapp delphiapp_original.ObjA

callerapp 是另一个调用 Delphi DCOM 对象的应用程序。

我的问题是如何运行我的新 Delphi 应用程序。是吗:

callerapp delphiapp_new.ObjA

我知道我的问题听起来很愚蠢,但我没有要测试的环境,所以我无法尝试该命令。我问的另一个原因是我不确定上述命令行中的delphiapp_originaldelphiapp_new 是exe 的名称还是exe 中某个类/对象的名称。如果它们是 exe 的名称会很好,这样会调用不同的 DCOM 对象。但是如果上面命令行中的delphiapp_original或者delphiapp_new是exe里面的类/对象的名字,那就麻烦了,因为我只是重命名了exe,旧exe和新exe里面的东西都是一样的name,我不知道调用的是哪个对象。

【问题讨论】:

如果你不能测试这个,你就不会成功。 【参考方案1】:

正如您所怀疑的,仅重命名 EXE 文件是不够的。您必须编辑项目的类型库以更改它定义的 COM 对象的 GUID/ProgID。然后,您可以编译 EXE 文件的新版本并运行它,以便使用新的 GUID/ProgID 重新注册其 COM 对象。然后,新旧版本将能够以不同的名称在同一台 PC 上共存。

【讨论】:

以上是关于调用德尔福 DCOM的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 DCOM 客户端会锁定对 SendMessage 的调用?

如何用 C# 编写可以远程调用的 DCOM 服务器?

解决PHP调用Word组件DCOM权限问题

解决PHP调用Word组件DCOM权限问题

WebAPP,API调用Excel, Word,Bartender等DCOM, VS调试没问题,发布到IIS出错

如何在对 C# .NET 3.5 服务器进行 DCOM 调用时可靠地检查客户端身份?