这个点子来自Jiang Sheng蒋大拿:http://stackoverflow.com/questions/2048424/disable-image-loading-from-webbrowser-control-before-the-documentcompleted-event
参考:https://code.google.com/archive/p/csexwb2/这个项目里的cEXWB.cs文件,通过实现
DISPID_AMBIENT_DLCONTROL
ambient property属性来做到,摘录如下。暂作记录,尚未验证。
private DOCDOWNLOADCTLFLAG m_DLCtlFlags = DOCDOWNLOADCTLFLAG.DLIMAGES |
DOCDOWNLOADCTLFLAG.BGSOUNDS | DOCDOWNLOADCTLFLAG.VIDEOS;
...........
//Create a new WB, throws exception if fails
Type webbrowsertype = Type.GetTypeFromCLSID(Iid_Clsids.CLSID_WebBrowser, true);
//Using Activator inplace of CoCreateInstance, returns IUnknown
m_WBUnknown = System.Activator.CreateInstance(webbrowsertype);
................
//Get the IWebBrowser2
m_WBWebBrowser2 = (IWebBrowser2)m_WBUnknown;
.............
//Signal change of DL property
//so MSHTML call our Invoke method through Dispatch
//Otherwise refreshing the page will have no effect
//MSHTML does not know of new flags set by us
//QI for IOleControl
IOleControl pOC = (IOleControl)m_WBUnknown;
pOC.OnAmbientPropertyChange(HTMLDispIDs.DISPID_AMBIENT_DLCONTROL);
...........
/// <summary>
/// We don't have access to IDispatch::Invoke
/// Fired when IOleControl::OnAmbientPropertyChange is called
/// from WBDOCDOWNLOADCTLFLAG property in response to DLCtl flag changing
/// </summary>
/// <returns></returns>
[DispId(HTMLDispIDs.DISPID_AMBIENT_DLCONTROL)]
public int Idispatch_AmbiantDlControl_Invoke_Handler()
{
return (int)m_DLCtlFlags;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)