zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    数据结构与算法10 微服务接口的鉴权和限流 [MD]
    .Net开发环境配置[OS/IIS/VS...]
    一、单件模式
    正则表达式调试器1.1
    C#2.0新特性系列文章转载
    巧用VS2005解决VS2005网站发布不便问题
    配置VS2005,加速VS2005运行速度
    转载:ASP.NET运行机制 和 图片盗链问题
    ASP.NET页面提前处理问题
    关于NTLM认证的python和.NET实现
  • 原文地址:https://www.cnblogs.com/gsyifan/p/1810022.html
Copyright © 2011-2022 走看看