C# webBrowser自动登陆windows集成验证方法

1:创建控件:

button1 

webBrowser1 

textBox1  网址

textBox2  用户名

textBox3  密码

 

2:

using...

 

 1 using System;
 2 using System.Windows.Forms;
 3 using System.Runtime.InteropServices;

 

 

3:完整代码。

 

  1 
  2 namespace WebTest1
  3 {
  4     #region COM Interfaces
  5 
  6         [ComImport,
  7         Guid("00000112-0000-0000-C000-000000000046"),
  8         InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  9         public interface IOleObject
 10         {
 11             void SetClientSite(IOleClientSite pClientSite);
 12             void GetClientSite(IOleClientSite ppClientSite);
 13             void SetHostNames(object szContainerApp, object szContainerObj);
 14             void Close(uint dwSaveOption);
 15             void SetMoniker(uint dwWhichMoniker, object pmk);
 16             void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk);
 17             void InitFromData(IDataObject pDataObject, bool
 18             fCreation, uint dwReserved);
 19             void GetClipboardData(uint dwReserved, IDataObject ppDataObject);
 20             void DoVerb(uint iVerb, uint lpmsg, object pActiveSite,
 21             uint lindex, uint hwndParent, uint lprcPosRect);
 22             void EnumVerbs(object ppEnumOleVerb);
 23             void Update();
 24             void IsUpToDate();
 25             void GetUserClassID(uint pClsid);
 26             void GetUserType(uint dwFormOfType, uint pszUserType);
 27             void SetExtent(uint dwDrawAspect, uint psizel);
 28             void GetExtent(uint dwDrawAspect, uint psizel);
 29             void Advise(object pAdvSink, uint pdwConnection);
 30             void Unadvise(uint dwConnection);
 31             void EnumAdvise(object ppenumAdvise);
 32             void GetMiscStatus(uint dwAspect, uint pdwStatus);
 33             void SetColorScheme(object pLogpal);
 34         }
 35 
 36         [ComImport,
 37         Guid("00000118-0000-0000-C000-000000000046"),
 38         InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
 39         public interface IOleClientSite
 40         {
 41             void SaveObject();
 42             void GetMoniker(uint dwAssign, uint dwWhichMoniker, object ppmk);
 43             void GetContainer(object ppContainer);
 44             void ShowObject();
 45             void OnShowWindow(bool fShow);
 46             void RequestNewObjectLayout();
 47         }
 48 
 49         [ComImport,
 50         GuidAttribute("6d5140c1-7436-11ce-8034-00aa006009fa"),
 51         InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown),
 52         ComVisible(false)]
 53         public interface IServiceProvider
 54         {
 55             [return: MarshalAs(UnmanagedType.I4)]
 56             [PreserveSig]
 57             int QueryService(ref Guid guidService, ref Guid riid, out IntPtr
 58             ppvObject);
 59         }
 60 
 61         [ComImport, GuidAttribute("79EAC9D0-BAF9-11CE-8C82-00AA004BA90B"),
 62         InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown),
 63         ComVisible(false)]
 64         public interface IAuthenticate
 65         {
 66             [return: MarshalAs(UnmanagedType.I4)]
 67             [PreserveSig]
 68             int Authenticate(ref IntPtr phwnd,
 69             ref IntPtr pszUsername,
 70             ref IntPtr pszPassword
 71             );
 72         }
 73 
 74         #endregion
 75     public partial class Form1 : Form, IOleClientSite, IServiceProvider,IAuthenticate
 76     {
 77 
 78         public static Guid IID_IAuthenticate = new Guid("79eac9d0-baf9-11ce-8c82-00aa004ba90b");
 79         public const int INET_E_DEFAULT_ACTION = unchecked((int)0x800C0011);
 80         public const int S_OK = unchecked((int)0x00000000);
 81 
 82         public Form1()
 83         {
 84 
 85             InitializeComponent();
 86         }
 87 
 88         private void button1_Click(object sender, EventArgs e)
 89         {
 90             string oURL = this.textBox1.Text;
 91             webBrowser1.Navigate(oURL);
 92 
 93 
 94         }
 95 
 96         private void Form1_Load(object sender, EventArgs e)
 97         {
 98             string oURL = "about:blank";
 99             webBrowser1.Navigate(oURL);
100 
101 
102 
103             object obj = webBrowser1.ActiveXInstance;
104             IOleObject oc = obj as IOleObject;
105             oc.SetClientSite(this as IOleClientSite);
106         }
107         #region IOleClientSite Members
108 
109         public void SaveObject()
110         {
111             // TODO: Add Form1.SaveObject implementation
112         }
113 
114         public void GetMoniker(uint dwAssign, uint dwWhichMoniker, object
115         ppmk)
116         {
117             // TODO: Add Form1.GetMoniker implementation
118         }
119 
120         public void GetContainer(object ppContainer)
121         {
122             ppContainer = this;
123         }
124 
125         public void ShowObject()
126         {
127             // TODO: Add Form1.ShowObject implementation
128         }
129 
130         public void OnShowWindow(bool fShow)
131         {
132             // TODO: Add Form1.OnShowWindow implementation
133         }
134 
135         public void RequestNewObjectLayout()
136         {
137             // TODO: Add Form1.RequestNewObjectLayout implementation
138         }
139 
140         #endregion
141 
142         #region IServiceProvider Members
143 
144         public int QueryService(ref Guid guidService, ref Guid riid, out IntPtr ppvObject)
145         {
146             int nRet = guidService.CompareTo(IID_IAuthenticate); // Zero returned if the compared objects are equal
147             if (nRet == 0)
148             {
149                 nRet = riid.CompareTo(IID_IAuthenticate); // Zero returned if the compared objects are equal
150                 if (nRet == 0)
151                 {
152                     ppvObject = Marshal.GetComInterfaceForObject(this,
153                     typeof(IAuthenticate));
154                     return S_OK;
155                 }
156             }
157             ppvObject = new IntPtr();
158             return INET_E_DEFAULT_ACTION;
159         }
160 
161         #endregion
162 
163         #region IAuthenticate Members
164 
165         public int Authenticate(ref IntPtr phwnd, ref IntPtr pszUsername,ref IntPtr pszPassword)
166         {
167             IntPtr sUser = Marshal.StringToCoTaskMemAuto(textBox2.text);
168             IntPtr sPassword = Marshal.StringToCoTaskMemAuto(textBox3.text);
169 
170             pszUsername = sUser;
171             pszPassword = sPassword;
172             return S_OK;
173         }
174 
175         #endregion
176 
177     }
178 }
179 

 

 

posted @ 2010-08-27 12:40  翼帆  阅读(4118)  评论(6编辑  收藏  举报