IE10 で動作する ActiveX (アドオン) があります。インターネットのガイドラインとさまざまなリンクを使用して作成されました。以下を使用して 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);
}
}
これを機能させる方法はありますか?何を探すべきかについての指針はありますか?
更新 1:さらに分析した後、IE がプロセス モニターで InprocHandler32 を探していることがわかりました。
プロセス内で読み込まれる ActiveX の InProcess Handler が必要なのはなぜですか。アウト プロセス オブジェクト専用だと思いました。
それでも同じ問題が発生します。
MIME プレーヤーのように、ActiveX ドキュメントに似た特定の MIME タイプのリンクで IE によって読み込まれる ActiveX を作成しようとしています。
ブロックされている理由を見つける方法はありますか?COM オブジェクトを作成しなくても、このエラーが発生します。