Web 浏览器控件:阻止加载特定的 ActiveX 控件



我正在托管WebBrowser控件(使用ATL(,并且正在寻找一种方法来阻止特定的ActiveX控件(通过CLSID(加载。

我知道ProcessUrlAction可以阻止ActiveX控件,但这是针对整个URL,它似乎不允许你通过CLSID阻止特定的ActiveX控件。

我没有看到任何在 MSHTML 或 WebBrowser 控件中收到通知的特定事件接口。

现在我能想到的唯一解决方案是挂接CoCreateInstanceEx并尝试在那里阻止它。

有什么更简单的想法吗?

ProcessUrlAction 也可以阻止单个控件,您需要检查 dwAction=URLACTION_ACTIVEX_RUN,如果是,则 pContext 将具有即将运行的控件的 CLSID。如果它是您要阻止的那个,则将 pPolicy 设置为 URLPOLICY_DISALLOW 并返回S_FALSE:

static CLSID CLSID_BAD = {0x00000000, 0x0000, 0x0000, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
STDMETHOD(ProcessUrlAction)(LPCWSTR pwszUrl, DWORD dwAction, BYTE *pPolicy, DWORD cbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwFlags, DWORD dwReserved)
{
    if(URLACTION_ACTIVEX_RUN == dwAction && CLSID_BAD == *(CLSID *)pContext)
    {
        *pPolicy = URLPOLICY_DISALLOW;
        return S_FALSE;
    }
    return INET_E_DEFAULT_ACTION;
}

相关内容

  • 没有找到相关文章

最新更新