C#的webbrower控件过滤图片、Flash、声音、JS等的方法。作用我就不说了,编程是方便你自己的……请看代码。。
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("79eac9ec-baf9-11ce-8c82-00aa004ba90b")]
public interface IInternetProtocolInfo
{
[PreserveSig()] UInt32 ParseUrl(
[ MarshalAs(UnmanagedType.LPWStr)] string pwzUrl,
/* [in] */ PARSEACTION ParseAction,
UInt32 dwParseFlags,
IntPtr pwzResult,
UInt32 cchResult,
out UInt32 pcchResult,
UInt32 dwReserved);
[PreserveSig()] UInt32 CombineUrl(
[ MarshalAs(UnmanagedType.LPWStr)] string pwzBaseUrl,
[ MarshalAs(UnmanagedType.LPWStr)] string pwzRelativeUrl,
UInt32 dwCombineFlags,
IntPtr pwzResult,
UInt32 cchResult,
out UInt32 pcchResult,
UInt32 dwReserved);
[PreserveSig()] UInt32 CompareUrl(
[ MarshalAs(UnmanagedType.LPWStr)] string pwzUrl1,
[ MarshalAs(UnmanagedType.LPWStr)] string pwzUrl2,
UInt32 dwCompareFlags);
[PreserveSig()] UInt32 QueryInfo(
[ MarshalAs(UnmanagedType.LPWStr)] string pwzUrl,
QUERYOPTION OueryOption,
UInt32 dwQueryFlags,
IntPtr pBuffer,
UInt32 cbBuffer,
ref UInt32 pcbBuf,
UInt32 dwReserved);
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("79eac9e7-baf9-11ce-8c82-00aa004ba90b")]
public interface IInternetSession
{
void CreateBinding(); // Not Implemented
void GetCache(); // Not Implemented
void GetSessionOption(); // Not Implemented
void RegisterMimeFilter([MarshalAs(UnmanagedType.Interface)] IClassFactory pCF, ref Guid rclsid, [MarshalAs(UnmanagedType.LPWStr)]string pwzType);
void RegisterNameSpace([MarshalAs(UnmanagedType.Interface)] IClassFactory pCF, ref Guid rclsid, [MarshalAs(UnmanagedType.LPWStr)] string pwzProtocol,
UInt32 cPatterns, [MarshalAs(UnmanagedType.LPWStr)] string ppwzPatterns, UInt32 dwReserved);
void SetCache(); // Not Implemented
void SetSessionOption(); // Not Implemented
void UnregisterMimeFilter(IClassFactory pCF, [MarshalAs(UnmanagedType.LPWStr)] string pwzType);
void UnregisterNameSpace(IClassFactory pCF, [MarshalAs(UnmanagedType.LPWStr)] string pwzProtocol);
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("79EAC9E5-BAF9-11CE-8C82-00AA004BA90B")]
public interface IInternetProtocolSink
{
void Switch(IntPtr pProtocolData);
void ReportProgress(UInt32 ulStatusCode, [MarshalAs(UnmanagedType.LPWStr)] string szStatusText);
void ReportData(UInt32 grfBSCF, UInt32 ulProgress, UInt32 ulProgressMax);
void ReportResult(Int32 hrResult, UInt32 dwError, [MarshalAs(UnmanagedType.LPWStr)] string szResult);
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("79EAC9E4-BAF9-11CE-8C82-00AA004BA90B")]
public interface IInternetProtocol : IInternetProtocolRoot
{
void LockRequest(Int32 dwOptions);
[PreserveSig]
Int32 Read(IntPtr pv, UInt32 cb, out UInt32 pcbRead);
void Seek(Int64 dlibMove, UInt32 dwOrigin, out UInt64 plibNewPosition);
void UnlockRequest();
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("79EAC9E3-BAF9-11CE-8C82-00AA004BA90B")]
public interface IInternetProtocolRoot
{
void Abort(Int32 hrReason, Int32 dwOptions);
void Continue(IntPtr pProtocolData);
void Resume();
void Start([MarshalAs(UnmanagedType.LPWStr)] string szUrl, IInternetProtocolSink pOIProtSink,
IntPtr pOIBindInfo, UInt32 grfPI, IntPtr dwReserved);
void Suspend();
void Terminate(Int32 dwOptions);
}
[Guid("EFA14C17-7854-4fe2-AF94-856A9714A7B7")]
public interface IMhtHandler : IInternetProtocol, IInternetProtocolRoot, IInternetProtocolInfo
{
}
[Guid("B59A934A-A06D-4fa1-9AD3-49AEA12235A4"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMhtHandler_Events
{
}
public enum PI_FLAGS:uint
{
PI_PARSE_URL = 0x00000001,
PI_FILTER_MODE = 0x00000002,
PI_FORCE_ASYNC = 0x00000004,
PI_USE_WORKERTHREAD = 0x00000008,
PI_MIMEVERIFICATION = 0x00000010,
PI_CLSIDLOOKUP = 0x00000020,
PI_DATAPROGRESS = 0x00000040,
PI_SYNCHRONOUS = 0x00000080,
PI_APARTMENTTHREADED = 0x00000100,
PI_CLASSINSTALL = 0x00000200,
PI_PASSONBINDCTX = 0x00002000,
PI_NOMIMEHANDLER = 0x00008000,
PI_LOADAPPDIRECT = 0x00004000,
PD_FORCE_SWITCH = 0x00010000,
PI_PREFERDEFAULTHANDLER = 0x00020000
}
public enum BSCF : uint
{
BSCF_FIRSTDATANOTIFICATION = 0,
BSCF_INTERMEDIATEDATANOTIFICATION = 1,
BSCF_LASTDATANOTIFICATION = 2,
BSCF_DATAFULLYAVAILABLE = 3,
BSCF_AVAILABLEDATASIZEUNKNOWN = 4,
}