如果你知道连接的名称,例如“连接到163”或“ADSL”,那么这段程序就可以运行了,不过你可不能保证你的用户机器上有同样的连接名称,所以还必须要使用一段API函数来枚举所有的可用拨号连接名称才行。
专注于为中小企业提供成都网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业鲤城免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
新建一个VB Project,在Form1中做以下声明:
Private Const RAS_MaxDeviceType = 16
Private Const RAS95_MaxDeviceName = 128
Private Const RAS95_MaxEntryName = 256
Private Type RASCONN95
dwSize As Long
hRasConn As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Type RASENTRYNAME95
dwSize As Long
szEntryName(RAS95_MaxEntryName) As Byte
End Type
Private Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasEnumEntries Lib "RasApi32.DLL" Alias "RasEnumEntriesA" (ByVal reserved As String, ByVal lpszPhonebook As String, lprasentryname As Any, lpcb As Long, lpcEntries As Long) As Long
Private Declare Function RasHangUp Lib "rasapi32.dll" Alias _
"RasHangUpA" (ByVal hRasConn As Long) As Long
在Form上放一个ListBox或者ComboBox,然后在Form_Load中写入以下代码把当前可用的拨号连接名称加进去,这里我们使用ListBox。
Private Sub Form_Load()
Dim s As Long, l As Long, ln As Long, a$
ReDim R(255) As RASENTRYNAME95
R(0).dwSize = 264
s = 256 * R(0).dwSize
l = RasEnumEntries(vbNullString, vbNullString, R(0), s, ln)
For l = 0 To ln - 1
a$ = StrConv(R(l).szEntryName(), vbUnicode)
List1.AddItem Left$(a$, InStr(a$, Chr$(0)) - 1)
Next
List1.ListIndex = 0
End Sub
好,现在你就可以运行一下了,ListBox中应该把当前所有的拨号连接名称都显示出来了。
下面再往Form上加一个命令按钮,Caption设为“Connect”。输入以下代码:
Private Sub Command1_Click()
Dim cmd As String
cmd = "rundll rnaui.dll,RnaDial " List1.List(List1.ListIndex)
Shell cmd$, vbNormalFocus
End Sub
这段程序从ListBox获得选择的拨号连接名称,然后调用RunDLL建立拨号连接。如果已经建立连接,它将显示拨号连接的状态。如果你不想让对话框出现,再添一行代码上去:
DoEvents:SendKeys "{enter}", True
它将发送一个回车键到当前窗口,相当于用户按了“确认”按钮。
如何挂断当前的连接
我们继续在上面的基础上讲解,挂断连接要用到RasHangUp函数,我们在上面声明部分已经写过了。
再向Form1添加一个按钮Command2,Caption设为Disconnect,输入如下的代码:
Private Sub Command2_Click()
Dim s As Long, l As Long, ln As Long, a$, RasConn As Long, Ret As Long
b$ = List1.List(List1.ListIndex)
ReDim R(255) As RASCONN95
R(0).dwSize = 412
s = 256 * R(0).dwSize
l = RasEnumConnections(R(0), s, ln)
For l = 0 To ln - 1
a$ = StrConv(R(l).szEntryName(), vbUnicode)
a$ = Left$(a$, InStr(a$, Chr$(0)) - 1)
RasConn = R(l).hRasConn
'这里将挂断连接
Ret = RasHangUp(ByVal RasConn)
Next
End Sub
这段代码枚举当前所有的连接,并且把它挂断,如果你有双猫,三猫(没有这么好的条件吧),它将把所有连接都挂断。
如何判断当前是否连接到Internet
以前部分网站介绍过读取Registry来判断是否连接到Internet的方法,不过笔者认为这种方法不是最健壮,这里还是在上面的基础上用RasEnumConnections来判断某个连接是否已经连上线了。
再向Form1添加一个按钮Command3,Caption设为Status,输入如下的代码:
Private Sub Command2_Click()
Dim s As Long, l As Long, ln As Long, a$, b$
b$ = List1.List(List1.ListIndex)
ReDim R(255) As RASCONN95
R(0).dwSize = 412
s = 256 * R(0).dwSize
l = RasEnumConnections(R(0), s, ln)
For l = 0 To ln - 1
a$ = StrConv(R(l).szEntryName(), vbUnicode)
a$ = Left$(a$, InStr(a$, Chr$(0)) - 1)
If a$ = b$ Then MsgBox "Connected (or connecting)!": Exit Sub
Next
MsgBox "Not Connected!"
End Sub
本段代码判断ListBox当前选中的连接是否已经连接成功或者正在连接之中,并给出相应的信息。
.net 取宽带账号和密码的我没,如果你想实现拨号和断网的话 ,我有现成的模块
错误代码,是指人们在使用软、硬件、路由器的时候,这些软硬件不能正常操作的一种现象~~
如果是某几个网页打不开,而出现错误代码,那么这是属于服务器的事,我们是无法左右它的!
比较常见的一些代码如下:
错误678/651/815,碰到这样的代码,你先偿试重起电脑或路由器,以排除它们的偶然故障引起。
查看modem的亮灯情况:
第一步:查看power灯是否正常,稳定亮转至第二步,不亮则可能是忘记打开MODEM电源开关,插电源线或电源稳压器松动所致;
第二步:查看DSL灯是否正常亮。如稳定亮则转至第三步,如果DSL灯一直闪烁不停,表明ADSL线路正在连接或一直连接不上,此为线路问题,最常见的一种情况是分离器进线与接电话的端口接错了,这时调换接线端口,再检查室内的电话线接头是否接触不良,或者取消分离器,直接把入户线接入modem,再重启MODEM,如果仍不能解决问题出单检查外线。;
第三步:查看LAN亮灯情况,如不亮则转至第四步,如是稳定亮,有可能是电脑的拨号软件出现问题,建议重装拨号软件;
第四步:如LAN灯不亮,则是modem与电脑的连线问题,请从新拔插由modem到电脑之间的网线。
错误691/619/629一般多为账号密码不一致,欠费,账号挂死或者端口出错引起。
错误769/797一般是网卡禁用或者驱动程序出问题。
如果在你使用中,又出现了别的代码,那么你可以参考百科资料:
编写一个宽带连接的批处理脚本:
rasdial entryname [unseranamd 12345678]
编写一个宽带断开的批处理脚本:
rasphone -h entryname
在vb中调用这两个脚本执行就可以了;