当前位置: 移动技术网 > IT编程>开发语言>c# > C#.NET获取拨号连接的宽带连接方法

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例讲述了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#程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网