我需要制作一个最终看起来类似于此的自定义 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/