2014-01-10 100 views
0

這是MFC和CHtmlView,但它可能適用於所有IE Web控件的使用。MFC CHtmlView - 抑制混合內容警告?

當Web控件導航到某些站點上的頁面時,我們正在獲取HTTP/HTTPS混合內容警告彈出窗口。

是否有任何標誌,命令或特定於EXE的註冊表項可在我們的程序運行時進行設置,以禁用警告?更好的是,我們可以選擇「是」還是「否」?

我們不控制網站,所以「修復網頁」不是一個選項。我們的程序正在客戶PC上運行,因此「進入IE設置」也不是一個好的解決方案。

回答

2

Implement a Custom Security Manager對CHTMLView派生類使用的控制站點類使用成功代碼處理URLACTION_HTML_MIXED_CONTENT。控制站點是MFC的ActiveX客戶端站點from which the webbrowser control used in CHTMLView queries host capabilities的實現。

如果您使用MFC 7.0或更高版本,則需要替換控制站點via an overriden CreateControlSite function。在MFC 6.0中,您只能用覆蓋CreateSite方法的自己的COccManager將全局控制容器替換爲calling AfxEnableControlContainer

更換控制站點後,通過控制站點類上的BEGIN_INTERFACE_PART/END_INTERFACE_PART宏添加IServiceProvider和安全管理器接口(,IInternetSecurityManager,可選的IInternetSecurityManagerEx和IInternetSecurityManagerEx2)。如果您不熟悉MFC宏,請檢查TN038: MFC/OLE IUnknown Implementation。除非方法是ProcessUrlActionaction/ProcessUrlActionactionEx/ProcessUrlActionEx2並且代碼是URLACTION_HTML_MIXED_CONTENT,那麼您的實現應該返回INET_E_DEFAULT_ACTION,那麼您需要返回S_OK。使用URLPOLICY_ALLOW填充pPolicy的地址以靜默地允許混合內容,或URLPOLICY_DISALLOW禁止。在需要時使用URLPOLICY_QUERY來詢問用戶。