创建 ATL COM 对象后如何填写 ProgID。 ProgID 重要性

Posted

技术标签:

【中文标题】创建 ATL COM 对象后如何填写 ProgID。 ProgID 重要性【英文标题】:How to fill ProgID after creation ATL COM object. ProgID importance 【发布时间】:2012-08-08 00:14:51 【问题描述】:

我正在尝试使用 C++ ATL 创建 com 对象。在添加 ATL 简单对象向导中,我忘记填写 ProgID 字段。以后可以添加 ProgID 吗?我发现它位于 *.rgs 文件中。编辑此文件是否安全?如果是,在这种情况下如何处理定义语法中也需要的 UI? 正如我所理解的,当您想要创建 COM 对象时,ProgID 很重要,例如在 VB 中使用命令 CreateObject。当 ProgId 丢失时,还有哪些其他方法可以创建具有后期绑定的 com 对象?

【问题讨论】:

【参考方案1】:

是的,编辑 .rgs 文件是安全的。它只是一个注册表脚本 - 定义 ProgID 将插入注册表的位置。 (在 Visual Studio 中使用 C++ 时,在我看来,它们似乎没有那么多您不应该编辑的自动生成的文件。生成的文件通常带有标签。(就像是从 .idl 文件生成。))

所有向导所做的都是自动填写一些您通常需要手动完成的文件。知道什么放在哪里真的很有用,所以,如果你已经找到了这一点,听起来你是在正确的轨道上。

【讨论】:

以上是关于创建 ATL COM 对象后如何填写 ProgID。 ProgID 重要性的主要内容,如果未能解决你的问题,请参考以下文章

ATL COM dll 中的缓冲区溢出

C#调用ActiveX ClsID, COM ProgID, Runtime Type动态创建对象

c++ 如何在运行时获取 COM 对象 Coclass 的 progid

创建实现特定接口的 ATL COM 对象

如何将聚合 .NET COM 互操作添加到 ATL EXE 服务器?

如何使用 ATL 创建 VB6 集合对象