2013-08-06 47 views
1

我是CHtmlView的Visual C++編程的新手。我需要通過IHTMLDocument2接口創建一個Web瀏覽器應用程序顯示網站,它需要從網站上下載activex控件並自動運行它。問題在於,我所做的應用程序運行良好,除了網站上的activex控件未運行。我已經檢查了IHTMLDocument2的接口,並且在Dispid值等於DISPID_AMBIENT_DLCONTROL時也覆蓋OnAmbientProperty將標誌設置爲零,但它仍然不會加載正在使用我自己的Web瀏覽器應用程序瀏覽的網站上的ActiveX控件。使CHtmlView啓用ActiveX控件下載

任何人都可以告訴我哪個文件應該找?我很困惑如何在我自己的網頁瀏覽器應用程序上設置安全級別來啓用activex。

非常感謝!

回答

0

使它與MFC一起工作可能有點繁瑣的任務。您需要爲您的CHtmlView創建COleControlSiteCOccManager的自定義實現。在COleControlSite對象上,您需要實現IServiceProviderIInternetSecurityManager。用IInternetSecurityManager::ProcessUrlAction你可以控制如何處理ActiveX控件。 在這裏你可以找到上述的一些實現:

http://www.codeproject.com/Articles/4805/Advanced-customization-of-WebBrowser-Control-in-Di

http://www.codeproject.com/Articles/924/DHTML-User-Interface-Library

http://shareaza-code.googlecode.com/svn/trunk/CtrlWeb.cpp

+1

感謝Noseratio。你的答案非常有用。我已經從CHtmlView實現了一個新的派生類,並且我在下載ActiveX或運行ActiveX時將URL策略更改爲URLPOLICY_ALLOW。此外,我已經覆蓋CreateControlSite方法來爲IInternetSecurityManager實現傳遞新的COleContainer。但似乎ActiveX控件仍然沒有在我自己的網頁瀏覽器上運行。我不知道什麼是錯誤的,並且ProcessUrlAction已被多次調用,並且程序應返回策略操作的正確值。 –

+0

您的ActiveX控件是否已簽名? 您也可以嘗試禁用[FEATURE_RESTRICT_ACTIVEXINSTALL](http://msdn.microsoft.com/zh-cn/library/ee330729(v = vs.85).aspx#update_restrict)。 – Noseratio