1、如何断开ADSL播号连接;2、如何启动ADSL播号连接,不选择连接按钮,自动连接。
解决方案 »
- vb6.0调用CrystalReport7报表,提示cannot open SQL Server
- 變量Count2不能實現增加
- DataGrid控件问题!!!急
- 哪里有VB写Active-X控件的书下载啊?
- 编写 建立图片activeX dll 文件
- 求助!!!谁有关于API的详细资料,特别是网络api的!
- 高分求救,多多指点
- a easy question about "for each next"
- 怎样代码实现listview按住ctrl的效果?并且点击item即可选中checkbox
- “未知的错误:退出”。为什么会这样?
- 如何判断当前屏幕区域中有无指定的颜色。
- 那位大哥哥有Flash播放器 的源代码阿!?
下面是一个完整的拨号代码,如果需要自动的话
把Private Sub Command1_Click()hConn = Dialup("我的连线", "user", "passwd")if hConn = 0 ThenDebug.Print "连线失败"end ifEnd Sub
放在load事件里面建立拨号联接
Public Const RAS_MaxEntryName = 256
Private Type RASENTRYNAMEdwSize As LongszEntryName(RAS_MaxEntryName) As ByteEnd Type
c 中 Char aa[16] 代表长度是16,可放 15个byte所以对应於vb便是 aa(15) as Byte如此才是长度16 ( 0--15)。故VB的宣告中不能再用szEntryName(RAS_MaxEntryName+1)
但是Lenb(RASENTRYNAME)的长度却是 261 (4+257),的确,这是vb的问题,而c 的SizeOf传回的是4的倍数(32位元嘛)故值为264,所以我们计算某个Structure的长度时,要再多一些运算。
以下的Fuction只适用於32位元的win95/ NT,
'以下在Form中
Private hConn as LongPrivate Sub Command1_Click()hConn = Dialup("我的连线", "user", "passwd")if hConn = 0 ThenDebug.Print "连线失败"end ifEnd Sub
Private Sub Command2_Click()Call HangUp(hConn)End Sub
'以下在.bas中Option ExplicitPublic Const RAS_MaxEntryName = 256Public Const RAS_MaxDeviceName = 128Public Const RAS_MaxDeviceType = 16Public Const RAS_MaxPhoneNumber = 128Public Const RAS_MaxCallbackNumber = 128Public Const UNLEN = 256Public Const PWLEN = 256Public Const DNLEN = 15Public Const ERROR_INVALID_HANDLE = 6Type RASDIALPARAMSdwSize As Long '1052szEntryName(RAS_MaxEntryName) As ByteszPhoneNumber(RAS_MaxPhoneNumber) As ByteszCallbackNumber(RAS_MaxCallbackNumber) As ByteszUserName(UNLEN) As ByteszPassword(PWLEN) As ByteszDomain(DNLEN) As ByteEnd Type
Type RASCONNSTATUSdwSize As Long '144RasConnState As LongdwError As LongszDeviceType(RAS_MaxDeviceType) As ByteszDeviceName(RAS_MaxDeviceName) As ByteEnd Type
Declare Function RasGetErrorString Lib "rasapi32" _Alias "RasGetErrorStringA" (ByVal Errvalue As Long, ByVal lpErrStr As String, _ByVal cSize As Long) As LongDeclare Function RasDial Lib "rasapi32" _Alias "RasDialA" (DialExt As Long, ByVal lpPhoneBook As String, _RasDialParam As RASDIALPARAMS, ByVal NotifyType As Long, _ByVal Notifter As Long, hRasConn As Long) As LongDeclare Function RasHangUp Lib "rasapi32" Alias _"RasHangUpA" (ByVal hRasConn As Long) As LongDeclare Function RasGetConnectStatus Lib "rasapi32" Alias _"RasGetConnectStatusA" (ByVal hRasConn As Long, _lprasconnstatus As RASCONNSTATUS) As LongDeclare Function RasGetEntryDialParams Lib "rasapi32" _Alias "RasGetEntryDialParamsA" (ByVal lpszPhonebook As String, _lpRasDialParams As RASDIALPARAMS, _lpfPassword As Byte) As LongDeclare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'自动拨接(Win95 4, 5 个参数不传,或为vbNullString)Public Function DialUp(ByVal EntryName As String, ByVal UserN As String, _ByVal Pwd As String, Optional ByVal PhoneBook As String, Optional sDomain As String) As LongDim RasDialPara As RASDIALPARAMSDim bya() As Byte, di As LongDim len5 As Long, i As LongDim hRasConn As Long
len5 = LenB(RasDialPara)i = (4 - (len5 Mod 4)) Mod 4RasDialPara.dwSize = len5 + i '1052bya = StrConv(EntryName, vbFromUnicode) + ChrB(0)Call CopyByte(RasDialPara.szEntryName, bya)
bya = StrConv(UserN, vbFromUnicode) + ChrB(0)Call CopyByte(RasDialPara.szUserName, bya)
bya = StrConv(Pwd, vbFromUnicode) + ChrB(0)Call CopyByte(RasDialPara.szPassword, bya)
bya = StrConv(sDomain, vbFromUnicode) + ChrB(0)Call CopyByte(RasDialPara.szDomain, bya)'若使用以下CallBack function的方式,则RasDial()不等连线成功或失败便结束。di = RasDial(0, PhoneBook, RasDialPara, 0, AddressOf RasDialFunc, hRasConn)
'若第二、叁个参数都是0则,RasDial会等连线成功或失败後才执行下一行指令'di = RasDial(0, PhoneBook, RasDialPara, 0, 0, hRasConn)
If di = 0 ThenDialUp = hRasConnElseDialUp = 0Dim str5 As Stringstr5 = String(255, Chr(0))Call RasGetErrorString(di, str5, 256)MsgBox Left(str5, InStr(1, str5, Chr(0)) - 1), vbCriticalCall HangUp(hRasConn)End IfEnd Function
Public Sub RasDialFunc(ByVal unMsg As Long, _ByVal ConnState As Long, _ByVal dwError As Long)If ConnState = &H2000 Then' Connect CompleteEnd If
'取消拨接Public Function HangUp(ByVal hconn As Long) As BooleanDim st As Long, len5 As LongDim i As Long, ConStatus As RASCONNSTATUSst = RasHangUp(hconn)len5 = LenB(ConStatus)i = (4 - (len5 Mod 4)) Mod 4ConStatus.dwSize = len5 + iDo While TrueCall Sleep(0)i = RasGetConnectStatus(hconn, ConStatus)If i = ERROR_INVALID_HANDLE ThenExit DoEnd IfLoopIf st = 0 ThenHangUp = TrueElseHangUp = FalseEnd IfEnd Function
Private Sub CopyByte(dest() As Byte, sour() As Byte)Dim sourL As Long, sourU As LongDim destL As Long, destU As Long, i As Long, j As LongsourL = LBound(sour)sourU = UBound(sour)destL = LBound(dest)destU = UBound(dest)j = 0For i = sourL To sourUdest(destL + j) = sour(i)j = j + 1If j >= (destU - destL) + 1 ThenExit ForEnd IfNext iEnd Sub
你可以用 rasphone /? 查看其参数
RASPHONE里面要用到"""密码和账号""""如果不是编程..我用NircmdNircmd=ncnc rasdial 我的连接
XP系统+ADSL