最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年12月08日 09:26:44   投稿:jingxian  
下面小編就為大家?guī)硪黄狢# 實現(xiàn)ADSL自動斷網和撥號的方法(適用于撥號用戶)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

封裝類:

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");//重新?lián)芴?/pre>

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

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

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

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

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

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

您可能感興趣的文章:

相關文章

  • C#泛型委托的用法實例分析

    C#泛型委托的用法實例分析

    這篇文章主要介紹了C#泛型委托的用法,以實例形式較為詳細的分析了C#委托的功能與相關使用技巧,需要的朋友可以參考下
    2015-05-05
  • c#使用xamarin編寫撥打電話程序

    c#使用xamarin編寫撥打電話程序

    Xamarin是一個行動App開發(fā)平臺,提供跨平臺開發(fā)能力,開發(fā)人員透過Xamarin開發(fā)工具與程序語言,即可開發(fā)出iOS、Android 與Windows 等平臺的原生(Native) App 應用程序,不須個別使用各平臺的開發(fā)工具與程序語言,
    2015-05-05
  • C# 命名空間(Namespace)相關知識總結

    C# 命名空間(Namespace)相關知識總結

    這篇文章主要介紹了C# 命名空間(Namespace)的相關知識,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以參考下
    2020-06-06
  • C# PictureBox圖片控件實現(xiàn)圖片交換

    C# PictureBox圖片控件實現(xiàn)圖片交換

    在c#中可以使用PictureBox控件來呈現(xiàn)圖像,本文主要介紹了C# PictureBox實現(xiàn)圖片交換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • WPF實現(xiàn)2048小游戲

    WPF實現(xiàn)2048小游戲

    這篇文章主要為大家詳細介紹了WPF實現(xiàn)2048小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 使用C#開源文件實時監(jiān)控工具Tail&TailUI介紹

    使用C#開源文件實時監(jiān)控工具Tail&TailUI介紹

    本篇文章小編為大家介紹,使用C#開源文件實時監(jiān)控工具Tail&TailUI介紹。需要的朋友參考下
    2013-04-04
  • C# winform登陸框驗證碼的實現(xiàn)方法

    C# winform登陸框驗證碼的實現(xiàn)方法

    這篇文章主要為大家詳細介紹了C# winform登陸框驗證碼的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Unity中的RegisterPlugins實用案例深入解析

    Unity中的RegisterPlugins實用案例深入解析

    這篇文章主要為大家介紹了Unity中的RegisterPlugins實用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • C#程序員統(tǒng)計自己的代碼行數(shù)

    C#程序員統(tǒng)計自己的代碼行數(shù)

    這篇文章給大家講解了下作為程序員如何統(tǒng)計自己寫過的代碼的行數(shù),這個也是證明自己程序員能力的一個表現(xiàn),一起來看下。
    2017-12-12
  • C#實現(xiàn)廣度優(yōu)先搜索的實例代碼

    C#實現(xiàn)廣度優(yōu)先搜索的實例代碼

    廣度優(yōu)先搜索算法(BFS)是圖或樹搜索的重要算法,學習BFS能提高理解圖結構的能力,對解決復雜圖問題有幫助,實際應用包括網絡爬蟲、社交網絡分析、迷宮求解等,感興趣的可以了解一下
    2024-10-10

最新評論

乌兰察布市| 合川市| 静乐县| 姚安县| 丰台区| 互助| 杭锦后旗| 安丘市| 临澧县| 遂昌县| 陈巴尔虎旗| 缙云县| 呼伦贝尔市| 浑源县| 德钦县| 蓬安县| 三台县| 定西市| 泾川县| 万宁市| 东安县| 马鞍山市| 泾源县| 三亚市| 长兴县| 古浪县| 资阳市| 兰西县| 边坝县| 宜春市| 昌江| 丹寨县| 灵石县| 禹州市| 保康县| 桑日县| 天台县| 镇康县| 萝北县| 弋阳县| 平塘县|