• λ我爱Aspx >> C#.Net >> C#写的ADSL拨号程序示例
  • C#写的ADSL拨号程序示例

  • :aspxer  Դ:interet  :2007-5-11 20:55:14  ؼ:c#
  • ADSL自动拨号类,前提是在系统中已经有了一个宽带拨号连接 调用代码: RASDisplay ras = new RASDisplay(); ras.Disconnect();//断线 ras.Connect("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("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;i0) { for(int i=0;i Ҷƪл˵?

  • һƪ用ISAPIfilter使INC、ASA文件安全
    һƪ用Visual C#调用Windows API函数