我有一个在 IE10 下运行的 ActiveX (AddOn)。它使用来自互联网的指南和各种链接创建。我尝试使用以下方法使其与 EPM 兼容:
https://msdn.microsoft.com/en-us/library/dn519894(v=vs.85).aspx
- 创建了 32 位和 64 位版本的 dll
- 在 Program Files 文件夹下注册
但是,当我尝试从这个插件中创建一个 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);
}
}
有没有办法让它工作?关于寻找什么的任何指示?
更新 1:经过进一步分析,我看到 IE 正在进程监视器中寻找 InprocHandler32。
为什么我们需要在进程中加载的 ActiveX 的 InProcess Handler,我认为它仅适用于进程外对象。
虽然仍然遇到同样的问题。
我正在尝试创建一个由 IE 在类似于 ActiveX 文档的特定 MIME 类型的链接上加载的 ActiveX,例如 MIME 播放器
有没有办法找出它阻塞的原因?即使我不会创建 COM 对象,我也会收到此错误。