欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#.NET获取拨号连接的宽带连接方法

程序员文章站 2023-11-29 17:25:10
本文实例讲述了c#.net获取拨号连接的宽带连接方法。分享给大家供大家参考。具体如下: 该代码直接可以用,我在xp vs2010 net3.5上测试通过。 首先是asd...

本文实例讲述了c#.net获取拨号连接的宽带连接方法。分享给大家供大家参考。具体如下:

该代码直接可以用,我在xp vs2010 net3.5上测试通过。

首先是asdl的封装

class sinasdl
{
  //asdl在注册表中的存放位置,这个是针对winxp的,
  //不知道win7是否是这个,待验证
  private static string _adlskeys = @"remoteaccess\profile";
  public static string adlskeys
  {
    get
    {
      return _adlskeys;
    }
  }
  /// <summary>
  /// 获取本机的拨号名称,也就是本机上所有的拨号
  /// </summary>
  /// <returns></returns>
  public static string[] getasdlnames()
  {
    registrykey regkey = registry.currentuser.opensubkey(adlskeys);
    if (regkey != null)
      return regkey.getsubkeynames();
    else
      return null;
  }
  private string _asdlname = null;
  private processwindowstyle _windowstyle = processwindowstyle.hidden;
  /// <summary>
  /// 实例化一个asdl连接
  /// </summary>
  /// <param name="asdlname">asdl名称,如“宽带连接”</param>
  /// <param name="username">用户名</param>
  /// <param name="password">密码</param>
  /// <param name="windowstyle">窗口显示方式,默认为因此拨号过程</param>
  public sinasdl(string asdlname, string username = null, string password = null, processwindowstyle windowstyle = processwindowstyle.hidden)
  {
    this.asdlname = asdlname;
    this.username = username;
    this.password = password;
    this.windowstyle = windowstyle;
  }
  /// <summary>
  /// 拨号名称
  /// </summary>
  public string asdlname
  {
    get
    {
      return this._asdlname;
    }
    set
    {
      this._asdlname = value;
    }
  }
  /// <summary>
  /// 拨号进程的窗口方式
  /// </summary>
  public processwindowstyle windowstyle
  {
    get
    {
      return this._windowstyle;
    }
    set
    {
      this._windowstyle = value;
    }
  }
  private string _username = null;  //用户名
  private string _password = null;  //密码
  /// <summary>
  /// 用户名
  /// </summary>
  public string username
  {
    get
    {
      return this._username;
    }
    set
    {
      this._username = value;
    }
  }
  /// <summary>
  /// 密码
  /// </summary>
  public string password
  {
    get
    {
      return this._password;
    }
    set
    {
      this._password = value;
    }
  }
  /// <summary>
  /// 开始拨号
  /// </summary>
  /// <returns>返回拨号进程的返回值</returns>
  public int connect()
  {
    process pro = new process();
    pro.startinfo.filename = "rasdial.exe";
    pro.startinfo.arguments = this.asdlname + " " + this.username + " " + this.password;
    pro.startinfo.windowstyle = this.windowstyle;
    pro.start();
    pro.waitforexit();
    return pro.exitcode;
  }
  /// <summary>
  /// 端口连接
  /// </summary>
  /// <returns></returns>
  public int disconnect()
  {
    process pro = new process();
    pro.startinfo.filename = "rasdial.exe";
    pro.startinfo.arguments = this.asdlname + " /disconnect";
    pro.startinfo.windowstyle = this.windowstyle;
    pro.start();
    pro.waitforexit();
    return pro.exitcode;
  }
}

下面是使用测试:

//sinasdl asdl = new sinasdl("宽带连接", "08793312221", "123456");
//宽带连接
//使用枚举到的第一个进行拨号
sinasdl asdl = new sinasdl(sinasdl.getasdlnames()[0], "08793312221", "123456", system.diagnostics.processwindowstyle.normal);
if (asdl.connect() == 0)
{
  messagebox.show("success");
}
else
{
  messagebox.show("fail");
}

我自己测试的时候是通过的。

如果电脑上不止一个拨号的,那么你可以用sinasdl.getasdlnames()进行枚举。

希望本文所述对大家的c#程序设计有所帮助。