c webbrowser写入html,C#中实现WebBrowser控件的HTML源代码读写

本文介绍了如何在C#中使用WebBrowser控件进行HTML源代码的读写操作,包括利用UCOMIStream、IPersistStreamInit接口以及COM组件的相关方法。示例代码展示了如何加载和保存HTML源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6078bb396072ae4e9223ce0a3055cd99.gifUCOMIStream stream = null;

6078bb396072ae4e9223ce0a3055cd99.gif  

6078bb396072ae4e9223ce0a3055cd99.gif CreateStreamOnHGlobal(Marshal.StringToHGlobalUni(value), true, out stream);

6078bb396072ae4e9223ce0a3055cd99.gif   

6078bb396072ae4e9223ce0a3055cd99.gif

6078bb396072ae4e9223ce0a3055cd99.gif

6078bb396072ae4e9223ce0a3055cd99.gif

6078bb396072ae4e9223ce0a3055cd99.gif if(stream != null)

6078bb396072ae4e9223ce0a3055cd99.gif  

36f96e171fc2308f78f5faebdbed7172.gif

eacb3731ba8d971207e0437f0f7b4036.gif 

326d731d4f0521e24e55674923e66a08.gif{

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   IPersistStreamInit persistentStreamInit =

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif     (IPersistStreamInit)WebBrowser.Document;

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif  

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   persistentStreamInit.InitNew();

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   persistentStreamInit.Load(stream);

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   persistentStreamInit = null;

dd8da8832dbca407455b1c6be9f64ffd.gif }

6078bb396072ae4e9223ce0a3055cd99.gif

UCOMIStream是COM中IStream的CLR版本

CreateStreamOnHGlobal函数从一个字符串的地址

创建一个IStream供使用

6078bb396072ae4e9223ce0a3055cd99.gif [DllImport("ole32.dll", PreserveSig=false)]

6078bb396072ae4e9223ce0a3055cd99.gif static extern void CreateStreamOnHGlobal(IntPtr hGlobal,

6078bb396072ae4e9223ce0a3055cd99.gif   Boolean fDeleteOnRelease, [Out] out UCOMIStream pStream);

然后就是通过IPersistStreamInit接口初始化并载入HTML源码,

IPersistStreamInit接口CLR缺省没有导入,定义如下

6078bb396072ae4e9223ce0a3055cd99.gif [ComVisible(true), ComImport(), Guid("7FD52380-4E07-101B-AE2D-08002B2EC713"),

6078bb396072ae4e9223ce0a3055cd99.gif  InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)]

6078bb396072ae4e9223ce0a3055cd99.gif public interface IPersistStreamInit

36f96e171fc2308f78f5faebdbed7172.gif

eacb3731ba8d971207e0437f0f7b4036.gif 

326d731d4f0521e24e55674923e66a08.gif{

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   void GetClassID([In, Out] ref Guid pClassID);

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif  

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   [return: MarshalAs(UnmanagedType.I4)] [PreserveSig]

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   int IsDirty();

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif  

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   void Load([In, MarshalAs(UnmanagedType.Interface)] UCOMIStream pstm);

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   void Save([In, MarshalAs(UnmanagedType.Interface)] UCOMIStream pstm,

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif             [In, MarshalAs(UnmanagedType.I4)] int fClearDirty);

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   void GetSizeMax([Out, MarshalAs(UnmanagedType.LPArray)] long pcbSize);

4281b7ef6683e3ac0b1c5ee9f371b9b5.gif   void InitNew();

dd8da8832dbca407455b1c6be9f64ffd.gif }

读取HTML也是类似思路,将HTML源码写到一个IStream中

然后转换成字符串供C#代码使用,不过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值