关于WebBrowser禁用加载图片的一段C#代码

tellmethefuture 2010-05-02 04:02:53
注意红字部分,不好用啊 谁能帮忙看看能不能调通。可能是我用的不对。哪位朋友能帮忙建一个.NET 2.0的WinForm,把两楼的代码粘到编译器里看看效果呗,谢谢了!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace SpeedUpBrowser
{
public partial class Form1 : Form, IOleClientSite
{

#region BrowserController API
public BrowserOptions webBrowserOptions = BrowserOptions.DontRunActiveX | BrowserOptions.NoClientPull | BrowserOptions.NoJava | BrowserOptions.NoActiveXDownload;

[DispId(-5512)]
public virtual int IDispatch_Invoke_Handler()
{
System.Diagnostics.Debug.WriteLine("-5512");
return (int)webBrowserOptions;
}

#region IOleClientSite Members
public int SaveObject()
{
return 0;
}
public int GetMoniker(int dwAssign, int dwWhichMoniker, out object moniker)
{
moniker = this; return 0;
}
public int GetContainer(out object container)
{
container = this; return 0;
}
public int ShowObject()
{
return 0;
}
public int OnShowWindow(int fShow)
{
return 0;
}
public int RequestNewObjectLayout()
{
return 0;
}
#endregion

public void BrowserLoadImages(WebBrowser wBrowser, bool showImages)
{
if (showImages)
webBrowserOptions |= BrowserOptions.Images;
else
webBrowserOptions &= ~BrowserOptions.Images;
IOleControl obj = (IOleControl)wBrowser.ActiveXInstance;//notify browser of change
obj.OnAmbientPropertyChange(-5512);
}

public enum DOCDOWNLOADCTLFLAG
{
DLIMAGES = unchecked((int)0x00000010),
VIDEOS = unchecked((int)0x00000020),
BGSOUNDS = unchecked((int)0x00000040),
NO_SCRIPTS = unchecked((int)0x00000080),
NO_JAVA = unchecked((int)0x00000100),
NO_RUNACTIVEXCTLS = unchecked((int)0x00000200),
NO_DLACTIVEXCTLS = unchecked((int)0x00000400),
DOWNLOADONLY = unchecked((int)0x00000800),
NO_FRAMEDOWNLOAD = unchecked((int)0x00001000),
RESYNCHRONIZE = unchecked((int)0x00002000),
PRAGMA_NO_CACHE = unchecked((int)0x00004000),
NO_BEHAVIORS = unchecked((int)0x00008000),
NO_METACHARSET = unchecked((int)0x00010000),
URL_ENCODING_DISABLE_UTF8 = unchecked((int)0x00020000),
URL_ENCODING_ENABLE_UTF8 = unchecked((int)0x00040000),
NOFRAMES = unchecked((int)0x00080000),
FORCEOFFLINE = unchecked((int)0x10000000),
NO_CLIENTPULL = unchecked((int)0x20000000),
SILENT = unchecked((int)0x40000000),
OFFLINEIFNOTCONNECTED = unchecked((int)0x80000000),
OFFLINE = unchecked((int)0x80000000), //DLCTL_OFFLINEIFNOTCONNECTED

}


//DLCTL_DLIMAGES
private DOCDOWNLOADCTLFLAG m_DLCtlFlags = DOCDOWNLOADCTLFLAG.DLIMAGES |
DOCDOWNLOADCTLFLAG.BGSOUNDS | DOCDOWNLOADCTLFLAG.VIDEOS;

#endregion

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Url = new Uri("http://www.163.com");
BrowserLoadImages(webBrowser1, false);

}
}
}
...全文
916 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcoder 2011-01-02
  • 打赏
  • 举报
回复
看看这个
http://blog.csdn.net/netcoder/archive/2010/12/29/6105475.aspx
tellmethefuture 2010-05-02
  • 打赏
  • 举报
回复
这是上面引用的接口部分,网上找的代码
using System;
using System.Runtime.InteropServices;

namespace SpeedUpBrowser
{
public enum BrowserOptions : uint
{ ///
/// No flags are set. ///
None = 0, ///
/// The browser will operate in offline mode. Equivalent to DLCTL_FORCEOFFLINE. ///
AlwaysOffline = 0x10000000, ///
/// The browser will play background sounds. Equivalent to DLCTL_BGSOUNDS. ///
BackgroundSounds = 0x00000040, ///
/// Specifies that the browser will not run Active-X controls. Use this setting /// to disable Flash movies. Equivalent to DLCTL_NO_RUNACTIVEXCTLS. ///
DontRunActiveX = 0x00000200, ///
/// Specifies that the browser should fetch the content from the server. If the server's /// content is the same as the cache, the cache is used.Equivalent to DLCTL_RESYNCHRONIZE. ///
IgnoreCache = 0x00002000, ///
/// The browser will force the request from the server, and ignore the proxy, even if the /// proxy indicates the content is up to date.Equivalent to DLCTL_PRAGMA_NO_CACHE. ///
IgnoreProxy = 0x00004000, ///
/// Specifies that the browser should download and display images. This is set by default. /// Equivalent to DLCTL_DLIMAGES. ///
Images = 0x00000010, ///
/// Disables downloading and installing of Active-X controls.Equivalent to DLCTL_NO_DLACTIVEXCTLS. ///
NoActiveXDownload = 0x00000400, ///
/// Disables web behaviours.Equivalent to DLCTL_NO_BEHAVIORS. ///
NoBehaviours = 0x00008000, ///
/// The browser suppresses any HTML charset specified.Equivalent to DLCTL_NO_METACHARSET. ///
NoCharSets = 0x00010000, ///
/// Indicates the browser will ignore client pulls.Equivalent to DLCTL_NO_CLIENTPULL. ///
NoClientPull = 0x20000000, ///
/// The browser will not download or display Java applets.Equivalent to DLCTL_NO_JAVA. ///
NoJava = 0x00000100, ///
/// The browser will download framesets and parse them, but will not download the frames /// contained inside those framesets.Equivalent to DLCTL_NO_FRAMEDOWNLOAD. ///
NoFrameDownload = 0x00080000, ///
/// The browser will not execute any scripts.Equivalent to DLCTL_NO_SCRIPTS. ///
NoScripts = 0x00000080, ///
/// If the browser cannot detect any internet connection, this causes it to default to
/// offline mode.Equivalent to DLCTL_OFFLINEIFNOTCONNECTED. ///
OfflineIfNotConnected = 0x80000000, ///
/// Specifies that UTF8 should be used.Equivalent to DLCTL_URL_ENCODING_ENABLE_UTF8. ///
UTF8 = 0x00040000, ///
/// The browser will download and display video media.Equivalent to DLCTL_VIDEOS. ///
Videos = 0x00000020
}

#region COM Interfaces

[StructLayout(LayoutKind.Sequential)]
internal struct RECT { public int left; public int top; public int right; public int bottom; }

[Serializable, StructLayout(LayoutKind.Sequential)]
public struct MSG
{
public IntPtr hwnd;
public int message;
public IntPtr wParam;
public IntPtr lParam;
public int time;
public int pt_x;
public int pt_y;
}

[ComVisible(true), Guid("0000011B-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOleContainer
{
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int ParseDisplayName([In, MarshalAs(UnmanagedType.Interface)] Object pbc, [In, MarshalAs(UnmanagedType.LPWStr)] String pszDisplayName, [Out, MarshalAs(UnmanagedType.LPArray)] int[] pchEaten, [Out, MarshalAs(UnmanagedType.LPArray)] Object[] ppmkOut);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int EnumObjects([In, MarshalAs(UnmanagedType.U4)] uint grfFlags, [Out, MarshalAs(UnmanagedType.LPArray)] Object[] ppenum);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int LockContainer([In, MarshalAs(UnmanagedType.Bool)] Boolean fLock);
}

[ComVisible(true), Guid("00000118-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOleClientSite
{
[PreserveSig]
int SaveObject();
[PreserveSig]
int GetMoniker([In, MarshalAs(UnmanagedType.U4)] int dwAssign, [In, MarshalAs(UnmanagedType.U4)] int dwWhichMoniker, [MarshalAs(UnmanagedType.Interface)] out object moniker);
[PreserveSig]
int GetContainer(out object container);
[PreserveSig]
int ShowObject();
[PreserveSig]
int OnShowWindow(int fShow);
[PreserveSig]
int RequestNewObjectLayout();
}

[ComVisible(true), ComImport(), Guid("00000112-0000-0000-C000-000000000046"), InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IOleObject
{
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int SetClientSite([In, MarshalAs(UnmanagedType.Interface)] IOleClientSite pClientSite);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int GetClientSite([Out, MarshalAs(UnmanagedType.Interface)] out IOleClientSite site);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int SetHostNames([In, MarshalAs(UnmanagedType.LPWStr)] String szContainerApp, [In, MarshalAs(UnmanagedType.LPWStr)] String szContainerObj);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int Close([In, MarshalAs(UnmanagedType.U4)] uint dwSaveOption);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int SetMoniker([In, MarshalAs(UnmanagedType.U4)] uint dwWhichMoniker, [In, MarshalAs(UnmanagedType.Interface)] Object pmk);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int GetMoniker([In, MarshalAs(UnmanagedType.U4)] uint dwAssign, [In, MarshalAs(UnmanagedType.U4)] uint dwWhichMoniker, [Out, MarshalAs(UnmanagedType.Interface)] out Object moniker);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int InitFromData([In, MarshalAs(UnmanagedType.Interface)] Object pDataObject, [In, MarshalAs(UnmanagedType.Bool)] Boolean fCreation, [In, MarshalAs(UnmanagedType.U4)] uint dwReserved);
int GetClipboardData([In, MarshalAs(UnmanagedType.U4)] uint dwReserved, out Object data);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int DoVerb([In, MarshalAs(UnmanagedType.I4)] int iVerb, [In] IntPtr lpmsg, [In, MarshalAs(UnmanagedType.Interface)] IOleClientSite pActiveSite, [In, MarshalAs(UnmanagedType.I4)] int lindex, [In] IntPtr hwndParent, [In] RECT lprcPosRect);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int EnumVerbs(out Object e); // IEnumOLEVERB
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int OleUpdate();
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int IsUpToDate();
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int GetUserClassID([In, Out] ref Guid pClsid);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int GetUserType([In, MarshalAs(UnmanagedType.U4)] uint dwFormOfType, [Out, MarshalAs(UnmanagedType.LPWStr)] out String userType);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int SetExtent([In, MarshalAs(UnmanagedType.U4)] uint dwDrawAspect, [In] Object pSizel); // tagSIZEL
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int GetExtent([In, MarshalAs(UnmanagedType.U4)] uint dwDrawAspect, [Out] Object pSizel); // tagSIZEL
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int Advise([In, MarshalAs(UnmanagedType.Interface)] System.Runtime.InteropServices.ComTypes.IAdviseSink pAdvSink, out int cookie);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int Unadvise([In, MarshalAs(UnmanagedType.U4)] int dwConnection);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int EnumAdvise(out Object e);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int GetMiscStatus([In, MarshalAs(UnmanagedType.U4)] uint dwAspect, out int misc);
[return: MarshalAs(UnmanagedType.I4)]
[PreserveSig]
int SetColorScheme([In] Object pLogpal); // tagLOGPALETTE
}

[ComImport, Guid("B196B288-BAB4-101A-B69C-00AA00341D07"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOleControl
{
[PreserveSig]
int GetControlInfo([Out] object pCI);
[PreserveSig]
int OnMnemonic([In] ref MSG pMsg);
[PreserveSig]
int OnAmbientPropertyChange(int dispID);
[PreserveSig]
int FreezeEvents(int bFreeze);
}

#endregion COM Interfaces
}

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧