在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例Windows系统编程 → adsl 自动拨号类 源码

adsl 自动拨号类 源码

Windows系统编程

下载此实例
  • 开发语言:C#
  • 实例大小:6.70KB
  • 下载次数:18
  • 浏览次数:291
  • 发布时间:2013-08-08
  • 实例类别:Windows系统编程
  • 发 布 人:星火燎原
  • 文件格式:.cs
  • 所需积分:2
 相关标签: adsl拨号

实例介绍

【实例简介】
【实例截图】

【核心代码】

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("Ra<a href="http://dev.21tx.com/corp/sap/" target="_blank">SAP</a>i32.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
       );
******* string m_duration;
******* string m_ConnectionName;
******* string[] m_ConnectionNames;
******* double m_TX;
******* double m_RX;
******* bool m_connected;
******* 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);
}
}

标签: adsl拨号

实例下载地址

adsl 自动拨号类 源码

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警