[VB.NET]请问高手如何用VB2005调用系统默认连接实现自动拨号,谢
发布时间:2020-12-16 23:39:30 所属栏目:大数据 来源:网络整理
导读:请问高手如何用VB2005调用系统默认连接实现自动拨号,谢谢! 请问高手,如何用VB2005调用系统默认连接,进行ADSL的虚拟拨号和断线呢?谢谢啦! __________________________________________________________________________ 我也想知道 ___________________
请问高手如何用VB2005调用系统默认连接实现自动拨号,谢谢! 请问高手,如何用VB2005调用系统默认连接,进行ADSL的虚拟拨号和断线呢?谢谢啦! __________________________________________________________________________ 我也想知道 __________________________________________________________________________ Using comPort As SerialPort = My.Computer.Ports.OpenSerialPort( COM1,2400) comPort.DtrEnable = True comPort.Write( ATDT 206-555-1000 & vbCrLf) All data transfer code goes here. End Using __________________________________________________________________________ 你那是猫的打开方式喔 __________________________________________________________________________ 不会VB.net ,不过这里有一个C#的类,也许对你有帮助(试试将拨号类用C#编译成一个Dll后用vb.net调用,类很复杂,但调用很简单)。 =======调用代码:====== RASDisplay ras = new RASDisplay(); ras.Disconnect();//断线 ras.Connect( adsl );//拨号 宽带连接的名称是adsl =======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;i names[i].dwSize=entryNameSize; } retval = RAS.RasEnumEntries(null,out lpNames); } m_ConnectionNames = new string[names.Length]; if(lpNames> 0) { for(int i=0;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); } } __________________________________________________________________________ Private cc As Int32 = 0 Public Declare Function RasDial Lib RasApi32.DLL Alias RasDialA (ByVal lpRasDialExtensions As String,_ ByVal lpszPhonebook As String,ByRef lprasdialparams As _RASDIALPARAMS,ByVal dwNotifierType As Int32,_ ByVal lpvNotifier As Int32,ByRef lphRasConn As Int32) As Int32 Public Declare Function InternetHangUp Lib wininet.dll (ByVal dwConnection As Int32,ByVal dwReserved As Int32) As Int32 Private Declare Sub CopyMemory Lib kernel32 Alias RtlMoveMemory (ByVal lpvDest() As Byte,ByVal lpvSource() As Byte,ByVal cbCopy As Integer) Public Structure _RASDIALPARAMS Public dwSize As Int32 Public szEntryName() As Byte Public szPhoneNumber() As Byte Public szCallbackNumber() As Byte Public szUserName() As Byte Public szPassword() As Byte (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |