日期:2014-05-18  浏览次数:20719 次

高手解说下这个类 接口实现的来由,,帮忙,谢谢~~
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Security;
using System.Windows.Forms;
using System.Runtime.CompilerServices;

namespace ExtendedWebBrowser2
{
  class UnsafeNativeMethods
  {
  private UnsafeNativeMethods()
  { 
  }

  [ComImport, TypeLibType((short)0x1010), InterfaceType((short)2), Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D")]
  public interface DWebBrowserEvents2
  {
  [PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x66)]
  void StatusTextChange([In, MarshalAs(UnmanagedType.BStr)] string Text);
  [PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime), DispId(0x6c)]
  void ProgressChange([In] int Progress, [In] int ProgressMax);

  }

  [ComImport, SuppressUnmanagedCodeSecurity, TypeLibType(TypeLibTypeFlags.FOleAutomation | (TypeLibTypeFlags.FDual | TypeLibTypeFlags.FHidden)), Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E")]
  public interface IWebBrowser2
  {
  [DispId(100)]
  void GoBack();
  [DispId(0x65)]
  void GoForward();
  [DispId(0x66)]
  void GoHome();
  [DispId(0x67)]
  void GoSearch();
  [DispId(0x68)]
  void Navigate([In] string Url, [In] ref object flags, [In] ref object targetFrameName, [In] ref object postData, [In] ref object headers);
  [DispId(-550)]
  void Refresh();
  [DispId(0x69)]
  void Refresh2([In] ref object level);
  [DispId(0x6a)]
  void Stop();
  [DispId(200)]
  object Application { [return: MarshalAs(UnmanagedType.IDispatch)] get; }
  [DispId(0xc9)]
  object Parent { [return: MarshalAs(UnmanagedType.IDispatch)] get; }
  [DispId(0xca)]
  object Container { [return: MarshalAs(UnmanagedType.IDispatch)] get; }
  [DispId(0xcb)]
  object Document { [return: MarshalAs(UnmanagedType.IDispatch)] get; }
  [DispId(0xcc)]
  bool TopLevelContainer { get; }
  [DispId(0xcd)]
  string Type { get; }
  [DispId(0xce)]
  int Left { get; set; }
  [DispId(0xcf)]
  int Top { get; set; }
  [DispId(0xd0)]
  int Width { get; set; }
  [DispId(0xd1)]
  int Height { get; set; }
  [DispId(210)]
  string LocationName { get; }
  [DispId(0xd3)]
  string LocationURL { get; }
  [DispId(0xd4)]
  bool Busy { get; }
  [DispId(300)]
  void Quit();
  [DispId(0x12d)]
  void ClientToWindow(out int pcx, out int pcy);
  [DispId(0x12e)]
  void PutProperty([In] string property, [In] object vtValue);
  [DispId(0x12f)]
  object GetProperty([In] string property);
  [DispId(0)]
  string Name { get; }
  [DispId(-515)]
  int HWND { get; }
  [DispId(400)]
  string FullName { get; }
  [DispId(0x191)]
  string Path { get; }
  [DispId(0x192)]
  bool Visible { get; set; }
  [DispId(0x193)]
  bool StatusBar { get; set; }