我有一个在IE10下运行的ActiveX(AddOn) . 它使用来自互联网和各种链接的指南创建 . 我尝试使用以下方法使EPM兼容:
https://msdn.microsoft.com/en-us/library/dn519894(v=vs.85).aspx
-
创建了dll的32位和64位版本
-
在Program Files文件夹下注册
但是,当我尝试从这个AddOn中创建一个COM组件时,我得到的类没有注册 . 我的COM组件是一个ActiveX DLL,它创建为INPROC_SERVER
我的CLSIDFromProgID调用成功,因此在这种情况下注册表访问没有问题 . 它导致问题的CoCreateInstance .
hr = CLSIDFromProgID(L"myapp.mycontrol", &cls);
if(SUCCEEDED(hr))
{
hr = CoCreateInstance(cls, NULL, CLSCTX_INPROC_SERVER,
__uuidof(IMyControl), (void**) &m_pMyCtrl);
if(SUCCEEDED(hr))
{
...
}
else {
Log(hr);
}
}
有没有办法让这个工作?有什么要寻找的指针?
Update 1: 进一步分析后,我看到IE正在进程监视器中寻找InprocHandler32 .
为什么我们需要一个在进程中加载的ActiveX的InProcess Handler,我认为它只适用于Out of Process对象 .
尽管如此仍然有同样的问题 .
我正在尝试创建一个由IE加载的ActiveX,其类似于ActiveX文档的特定MIME类型的链接,如MIME播放器
有没有办法找到它阻塞的原因?即使我赢了,我也会收到此错误;创建COM对象 .