c++ - 是否可以在不在注册表中注册的情况下创建和使用 COM 类?

标签 c++ windows com

我需要制作一个最终看起来类似于此的自定义 COM 对象:

static const GUID IID_ClientCommunicator = { 0x5219b44a, 0x874, 0x449e,{ 0x86, 0x11, 0xb7, 0x8, 0xd, 0xbf, 0xa6, 0xab } };
static const GUID CLSID_ClientCommunicator = { 0x5219b44b, 0x874, 0x449e,{ 0x86, 0x11, 0xb7, 0x8, 0xd, 0xbf, 0xa6, 0xab } };

class ATL_NO_VTABLE CClientCommunicator:
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CClientCommunicator, &CLSID_ClientCommunicator>,
    public IDispatchImpl<CClientCommunicator, &IID_ClientCommunicator, 0, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
    //Custom functions

};

此对象最终将作为属性传递给 Internet Explorer 中的窗口 javascript 对象,以便我可以从 JavaScript 调用我在此类中定义的函数。

我的问题是,如果这一切都在单个可执行文件中完成,我是否需要在注册表中注册 COM 对象?如果是,如果我的 COM 对象在可执行文件中,我该怎么做?

最佳答案

正如用户@RaymondChen 在评论中指出的那样,有一个函数 CoRegisterClassObject here ,可用于注册 COM 类,而无需将它们添加到注册表。

这当然只允许您在注册它的可执行文件的范围内使用该 COM 类。

关于c++ - 是否可以在不在注册表中注册的情况下创建和使用 COM 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955791/

相关文章:

c# - 从 Internet 获取汇率

c# - 如果出现任何错误,如何自动重新打开/重新启动 WPF 应用程序?

python - 如何在 Linux 中的键盘上获取箭头键和回车键,使其表现得像 Windows7

c++ - COM 输出指针在客户端中保持为空

c++ - 没有 ->Release() 的 DirectX

java - 用于在稀疏机器学习中生成 uint64 或 uint32 特征 id 的良好哈希函数

c++ - 我可以实现 uint_fast64_t 和 unsigned long long 之间的类型等效吗?

c++ - 更新对话框的 MainWindow

C++ for 循环和基于范围的循环性能

c++ - 如何查询当前线程的 COM 单元状态