国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 實現ADSL自動斷網和撥號的方法(適用于撥號用戶)

2020-01-24 00:53:51
字體:
來源:轉載
供稿:網友

封裝類:

using System;using System.Runtime.InteropServices;public struct RASCONN{  public int dwSize;  public IntPtr hrasconn;  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)]  public string szEntryName;  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)]  public string szDeviceType;  [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)]  public string szDeviceName;}[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public struct RasStats{  public int dwSize;  public int dwBytesXmited;  public int dwBytesRcved;  public int dwFramesXmited;  public int dwFramesRcved;  public int dwCrcErr;  public int dwTimeoutErr;  public int dwAlignmentErr;  public int dwHardwareOverrunErr;  public int dwFramingErr;  public int dwBufferOverrunErr;  public int dwCompressionRatioIn;  public int dwCompressionRatioOut;  public int dwBps;  public int dwConnectionDuration;}[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public struct RasEntryName{  public int dwSize;  //[MarshalAs(UnmanagedType.ByValTStr,SizeConst=(int)RasFieldSizeConstants.RAS_MaxEntryName + 1)]  public string szEntryName;  //#if WINVER5  // public int dwFlags;  // [MarshalAs(UnmanagedType.ByValTStr,SizeConst=260+1)]  // public string szPhonebookPath;  //#endif}public class RAS{  [DllImport("Rasapi32.dll", EntryPoint = "RasEnumConnectionsA",     SetLastError = true)]  internal static extern int RasEnumConnections    (    ref RASCONN lprasconn, // buffer to receive connections data    ref int lpcb, // size in bytes of buffer    ref int lpcConnections // number of connections written to buffer    );  [DllImport("rasapi32.dll", CharSet = CharSet.Auto)]  internal static extern uint RasGetConnectionStatistics(    IntPtr hRasConn,    // handle to the connection    [In, Out]RasStats lpStatistics // buffer to receive statistics    );  [DllImport("rasapi32.dll", CharSet = CharSet.Auto)]  public extern static uint RasHangUp(    IntPtr hrasconn // handle to the RAS connection to hang up    );  [DllImport("rasapi32.dll", CharSet = CharSet.Auto)]  public extern static uint RasEnumEntries(    string reserved,       // reserved, must be NULL    string lpszPhonebook,     // pointer to full path and    // file name of phone-book file    [In, Out]RasEntryName[] lprasentryname, // buffer to receive    // phone-book entries    ref int lpcb,         // size in bytes of buffer    out int lpcEntries       // number of entries written    // to buffer    );  [DllImport("wininet.dll", CharSet = CharSet.Auto)]  public extern static int InternetDial(    IntPtr hwnd,    [In]string lpszConnectoid,    uint dwFlags,    ref int lpdwConnection,    uint dwReserved    );  public RAS()  {  }}public enum DEL_CACHE_TYPE //要刪除的類型。{  File,//表示internet臨時文件  Cookie //表示Cookie}public class RASDisplay{  [DllImport("wininet.dll", CharSet = CharSet.Auto)]  public static extern bool DeleteUrlCacheEntry(    DEL_CACHE_TYPE type    );  private string m_duration;  private string m_ConnectionName;  private string[] m_ConnectionNames;  private double m_TX;  private double m_RX;  private bool m_connected;  private IntPtr m_ConnectedRasHandle;  RasStats status = new RasStats();  public RASDisplay()  {    m_connected = true;    RAS lpras = new RAS();    RASCONN lprasConn = new RASCONN();    lprasConn.dwSize = Marshal.SizeOf(typeof(RASCONN));    lprasConn.hrasconn = IntPtr.Zero;    int lpcb = 0;    int lpcConnections = 0;    int nRet = 0;    lpcb = Marshal.SizeOf(typeof(RASCONN));    nRet = RAS.RasEnumConnections(ref lprasConn, ref lpcb, ref      lpcConnections);    if (nRet != 0)    {      m_connected = false;      return;    }    if (lpcConnections > 0)    {      //for (int i = 0; i < lpcConnections; i++)      //{      RasStats stats = new RasStats();      m_ConnectedRasHandle = lprasConn.hrasconn;      RAS.RasGetConnectionStatistics(lprasConn.hrasconn, stats);      m_ConnectionName = lprasConn.szEntryName;      int Hours = 0;      int Minutes = 0;      int Seconds = 0;      Hours = ((stats.dwConnectionDuration / 1000) / 3600);      Minutes = ((stats.dwConnectionDuration / 1000) / 60) - (Hours * 60);      Seconds = ((stats.dwConnectionDuration / 1000)) - (Minutes * 60) - (Hours * 3600);      m_duration = Hours + " hours " + Minutes + " minutes " + Seconds + " secs";      m_TX = stats.dwBytesXmited;      m_RX = stats.dwBytesRcved;      //}    }    else    {      m_connected = false;    }    int lpNames = 1;    int entryNameSize = 0;    int lpSize = 0;    RasEntryName[] names = null;    entryNameSize = Marshal.SizeOf(typeof(RasEntryName));    lpSize = lpNames * entryNameSize;    names = new RasEntryName[lpNames];    names[0].dwSize = entryNameSize;    uint retval = RAS.RasEnumEntries(null, null, names, ref lpSize, out lpNames);    //if we have more than one connection, we need to do it again    if (lpNames > 1)    {      names = new RasEntryName[lpNames];      for (int i = 0; i < names.Length; i++)      {        names[i].dwSize = entryNameSize;      }      retval = RAS.RasEnumEntries(null, null, names, ref lpSize, out lpNames);    }    m_ConnectionNames = new string[names.Length];    if (lpNames > 0)    {      for (int i = 0; i < names.Length; i++)      {        m_ConnectionNames[i] = names[i].szEntryName;      }    }  }  public string Duration  {    get    {      return m_connected ? m_duration : "";    }  }  public string[] Connections  {    get    {      return m_ConnectionNames;    }  }  public double BytesTransmitted  {    get    {      return m_connected ? m_TX : 0;    }  }  public double BytesReceived  {    get    {      return m_connected ? m_RX : 0;    }  }  public string ConnectionName  {    get    {      return m_connected ? m_ConnectionName : "";    }  }  public bool IsConnected  {    get    {      return m_connected;    }  }  public int Connect(string Connection)  {    int temp = 0;    uint INTERNET_AUTO_DIAL_UNATTENDED = 2;    int retVal = RAS.InternetDial(IntPtr.Zero, Connection, INTERNET_AUTO_DIAL_UNATTENDED, ref temp, 0);    return retVal;  }  public void Disconnect()  {    RAS.RasHangUp(m_ConnectedRasHandle);  }}

調用方法:

RASDisplay ras = new RASDisplay();ras.Disconnect();//斷開連接ras.Connect("ADSL");//重新撥號

注意:斷開后連接時,如果不想出現確認對話框,請按下面的步驟進行設置:

1、右擊“網上鄰居”--屬性;

2、在隨后出現的“寬帶連接”窗口中,右擊寬帶連接,單擊“屬性”;

3、在隨后出現的屬性對話框中,單擊“選項”;

4、把隨后出現的“提示名稱、密碼和證書等”前面的對號去掉,點“確定”退出;

以上這篇C# 實現ADSL自動斷網和撥號的方法(適用于撥號用戶)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郯城县| 和平区| 高淳县| 丁青县| 故城县| 金阳县| 房产| 乡城县| 鹿泉市| 长泰县| 武汉市| 云安县| 田东县| 和田县| 武功县| 石景山区| 镇原县| 威远县| 辽源市| 石渠县| 承德县| 全南县| 陇川县| 鄂托克旗| 丁青县| 疏附县| 湖州市| 孝感市| 镇康县| 赤城县| 普兰店市| 安化县| 潮州市| 弋阳县| 旌德县| 溧水县| 赫章县| 平陆县| 北碚区| 西乌珠穆沁旗| 乌什县|