我想要让我的WebBrowser在加载页面的时候不显示图片
但我发现没有办法完成如
在
1:WebBrowser的Navigating的时候,
Document为null ,这里为要进行跳转,所以不可能在这里拦截
2:WebBrowser的Navigated的时候
Document有内容,但Document.Body为null,说明已经定向好了,要开始接收Body内容了,所以这里也没有办法
3:WebBrowser的DocumentCompleted的时候
Document有值,Body也有值,但遗憾的是这个是已经加载了页面了,你再去除也滑
应该Windows已经下载了图片
那应该怎么来实现呢?
谢谢
但我发现没有办法完成如
在
1:WebBrowser的Navigating的时候,
Document为null ,这里为要进行跳转,所以不可能在这里拦截
2:WebBrowser的Navigated的时候
Document有内容,但Document.Body为null,说明已经定向好了,要开始接收Body内容了,所以这里也没有办法
3:WebBrowser的DocumentCompleted的时候
Document有值,Body也有值,但遗憾的是这个是已经加载了页面了,你再去除也滑
应该Windows已经下载了图片
那应该怎么来实现呢?
谢谢
http://www.codeproject.com/Articles/157329/Http-Monitor-for-Webbrowser-Control
我不用C++
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.VisualStudio.OLE.Interop;[ComVisible(true)]
public partial class Form1 : Form, IOleClientSite
{
public Form1()
{
InitializeComponent();
} private const int DISPID_AMBIENT_DLCONTROL = -5512; private void Form1_Load(object sender, EventArgs e)
{
var obj = (IOleObject)webBrowser1.ActiveXInstance;
obj.SetClientSite(this);
var oc = (IOleControl)webBrowser1.ActiveXInstance;
oc.OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL); webBrowser1.Navigate("http://www.163.com");
} [DispId(DISPID_AMBIENT_DLCONTROL)]
public int Idispatch_AmbiantDlControl_Invoke_Handler()
{
return 0;
} public void SaveObject()
{
throw new NotImplementedException();
}
public void GetMoniker(uint dwAssign, uint dwWhichMoniker, out IMoniker ppmk)
{
throw new NotImplementedException();
}
public void GetContainer(out IOleContainer ppContainer)
{
throw new NotImplementedException();
}
public void ShowObject()
{
throw new NotImplementedException();
}
public void OnShowWindow(int fShow)
{
throw new NotImplementedException();
}
public void RequestNewObjectLayout()
{
throw new NotImplementedException();
}
}
不过WebBrowser可以控制的部分有限,要想全面控制wb,可以用第三方封装的控件,比如csEXWB,它有下载管理控制,底层也是用的截获HTTP请求的方式,比自己写方便些。
要想加快速速,还是用WebRequest自己去下载好些,WebBrowser毕竟是重量级的。