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

首頁 > 編程 > C# > 正文

C# 實現(xiàn)ADSL自動斷網(wǎng)和撥號的方法(適用于撥號用戶)

2019-10-29 21:17:37
字體:
供稿:網(wǎng)友

封裝類:

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);  }}

調(diào)用方法:

RASDisplay ras = new RASDisplay();ras.Disconnect();//斷開連接ras.Connect("ADSL");//重新?lián)芴?/pre>

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

1、右擊“網(wǎng)上鄰居”--屬性;

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

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

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

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


注:相關(guān)教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 扎鲁特旗| 伽师县| 报价| 新化县| 元阳县| 中阳县| 江北区| 遂平县| 黄梅县| 文昌市| 子长县| 滨海县| 绩溪县| 红原县| 武山县| 霸州市| 临夏县| 新化县| 五台县| 剑川县| 来凤县| 蒙自县| 麻城市| 马龙县| 浦城县| 麟游县| 祁连县| 阳城县| 交城县| 张家口市| 湖州市| 孝昌县| 南丹县| 尼玛县| 南川市| 湖口县| 武定县| 博乐市| 长泰县| 开远市| 贞丰县|