用Visual C#打造多页面网页浏览器

http://tech.ddvip.com   2006年08月02日    社区交流

本文详细介绍用Visual C#打造多页面网页浏览器

  注意,每一个WebBrowser控件都有一个tag,我定义成一个简单的class,它用来包含一些该控件相关的独有信息。请看:

  public class HE_WebBrowserTag
{
 public int _TabIndex = 0;
 public bool _CanBack = false;
 public bool _CanForward = false;
}

  三、实现“查找”、“查看页面源文件”、“选项”对话框等功能

  注意 本例程中使用了一个未公开的GUID,其在将来的系统中可以发生变更。

  1、定义 IOleCommandTarget 接口

  为定义一个.NET接口以获得关于一个COM接口的参考,请遵从下列步骤:

  1) 赋予.NET接口相应的COM接口的GUID值;

  2) 包含对接口中所有方法的类型声明;

  3) 包含对Mshtml.dll和Shdocvw.dll文件的参考,在Visual C# .NET工程中操作,请遵从:

  A. 在项目菜单下单击“添加引用”;

  B. 单击“COM” 选项卡;

  C. 双击“Microsoft HTML Object Library” 和“Microsoft Internet Controls”。

  4) 应该在程序命名空间声明之前,包含下面的接口声明以添加对Microsoft HTML (MSHTML) IOleCommandTarget接口的参照引用:

  using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)]
public struct OLECMDTEXT
{
 public uint cmdtextf;
 public uint cwActual;
 public uint cwBuf;
 [MarshalAs(UnmanagedType.ByValTStr,SizeConst=100)]public char rgwz;
}
[StructLayout(LayoutKind.Sequential)]
public struct OLECMD
{
 public uint cmdID;
 public uint cmdf;
}
// IOleCommandTarget的Interop定义
[ComImport,
Guid("b722bccb-4e68-101b-a2bc-00aa00404770"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IOleCommandTarget
{
 //重要: 下面方法的顺序非常重要,因为本示例中我们使用的是早期绑定,详见MSDN中有关.NET/COM互操作的参考。
 void QueryStatus(ref Guid pguidCmdGroup, UInt32 cCmds,
 [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=1)] OLECMD[] prgCmds, ref OLECMDTEXT CmdText);
 void Exec(ref Guid pguidCmdGroup, uint nCmdId, uint nCmdExecOpt, ref object pvaIn, ref object pvaOut);
}

作者:朱先忠    责编:豆豆技术应用

正在加载评论...