[VB.NET]请问高手如何用VB2005调用系统默认连接实现自动拨号,谢谢!
来源:互联网 发布:男士钱包 知乎 编辑:程序博客网 时间:2024/04/30 16:28
<script type="text/javascript"><!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
请问高手如何用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,null,names,ref lpSize,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
_
Public szDomain() As Byte
Public dwSubEntry As Int32
Public dwCallbackId As Int32
End Structure
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim lp As New _RASDIALPARAMS
With lp
ReDim .szEntryName(256)
ReDim .szPhoneNumber(128)
ReDim .szCallbackNumber(128)
ReDim .szUserName(256)
ReDim .szPassword(256)
ReDim .szDomain(15)
Dim bSrc(100) As Byte
bSrc = System.Text.Encoding.ASCII.GetBytes( tz ) 用户名
Dim cbCopy As Integer = tz .Length()
CopyMemory(.szUserName, bSrc, cbCopy)
bSrc = System.Text.Encoding.ASCII.GetBytes( tztztz ) 密码
cbCopy = tztztz .Length()
CopyMemory(.szPassword, bSrc, cbCopy)
bSrc = System.Text.Encoding.ASCII.GetBytes( dsf ) 你的连接名称
cbCopy = dsf .Length()
CopyMemory(.szEntryName, bSrc, cbCopy)
End With
lp.dwSize = Marshal.SizeOf(lp)
Dim aa As Integer
aa = RasDial(vbNullString, vbNullString, lp, 0, 0, cc)
MessageBox.Show(aa)
aa = InternetDial(Me.Handle, dsf , &H4000, cc, 0)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
InternetHangUp(cc, 0)
End Sub
__________________________________________________________________________
一年之前问的问题,一年之后又遇到了,现在已经解决了,用了比较简单的方法,写了两个批处理,再调批处理即可,这两个批处理的写法网上很容易查到。
__________________________________________________________________________
上边的几个方法也挺好,先收藏了,回头再研究研究这代码~
__________________________________________________________________________
请问高手如何用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,null,names,ref lpSize,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
Public szDomain() As Byte
Public dwSubEntry As Int32
Public dwCallbackId As Int32
End Structure
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim lp As New _RASDIALPARAMS
With lp
ReDim .szEntryName(256)
ReDim .szPhoneNumber(128)
ReDim .szCallbackNumber(128)
ReDim .szUserName(256)
ReDim .szPassword(256)
ReDim .szDomain(15)
Dim bSrc(100) As Byte
bSrc = System.Text.Encoding.ASCII.GetBytes( tz ) 用户名
Dim cbCopy As Integer = tz .Length()
CopyMemory(.szUserName, bSrc, cbCopy)
bSrc = System.Text.Encoding.ASCII.GetBytes( tztztz ) 密码
cbCopy = tztztz .Length()
CopyMemory(.szPassword, bSrc, cbCopy)
bSrc = System.Text.Encoding.ASCII.GetBytes( dsf ) 你的连接名称
cbCopy = dsf .Length()
CopyMemory(.szEntryName, bSrc, cbCopy)
End With
lp.dwSize = Marshal.SizeOf(lp)
Dim aa As Integer
aa = RasDial(vbNullString, vbNullString, lp, 0, 0, cc)
MessageBox.Show(aa)
aa = InternetDial(Me.Handle, dsf , &H4000, cc, 0)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
InternetHangUp(cc, 0)
End Sub
__________________________________________________________________________
一年之前问的问题,一年之后又遇到了,现在已经解决了,用了比较简单的方法,写了两个批处理,再调批处理即可,这两个批处理的写法网上很容易查到。
__________________________________________________________________________
上边的几个方法也挺好,先收藏了,回头再研究研究这代码~
__________________________________________________________________________
- [VB.NET]请问高手如何用VB2005调用系统默认连接实现自动拨号,谢谢!
- [VB.NET]请问使用VB2005的朋友们
- [VB.NET]资源管理器如何用.net2005实现
- [VB.NET]求如何用VB.NET语言+ACCECC数据库实现一个对会员等级自动升级功能!
- [VB.NET]急,高手帮忙解决,谢谢!
- VB.net,VB2005实现TCP协议编程
- VB.net,VB2005实现TCP协议编程
- 如何用VB实现Excel文件的自动合并
- 如何用VB实现Excel文件的自动合并
- vb.net如何用线程池实现多线程事件
- 请问DELPHI中如何用ADOCONNECTION来动态连接SQL数据库!请高手指点。。最好能给个例子看看!!
- [VB.NET]VB.NET下如何用结构和类实现文件的读取?
- 如何用Delphi创建一个能随意拨号,并连接到对方的“猫”上的程序,谢谢(小弟才浅,请指教)
- [VB.NET]请问VB2005里面是否有类似VB6的CoolBar的控件?
- 如何用vb语句连接SQL数据库
- 如何用vb.net下载web页
- 如何用VB.NET获取环境变量
- 如何用VB.NET生成GUID
- [VB.NET]在vb.net中怎样来改变datagridview上一行的颜色??
- 两个超大数的相加
- [VB.NET]关于datagridviewr
- [VB.NET]关于更新
- [VB.NET]控制台给cmd.exe传参问题,多谢指点
- [VB.NET]请问高手如何用VB2005调用系统默认连接实现自动拨号,谢谢!
- [VB.NET]在线程里频繁的进行委托操作主界面的ui是不是效果不好?
- [VB.NET]帮忙看看这些代码!!!
- [VB.NET]想做这样一个功能,大家看看可行否?
- 围棋AI之路(四):来自UCG的改进
- [VB.NET]请教: 如何通过继承ToolStrip和ToolStripItem类,实现类似TreeView的分层节点(菜单) 功能 ?
- [VB.NET]怎样才能用VB.NET的代码来关闭一个在运行的程序?????
- EJB3.0中,在一个Bean中使用另外一个Bean
- 杀QQ(超简单)