VB实现ADSL自动拨号的2种方法

利用VB 实现短消息收发 利用VB 实现短消息收发摘要:近来,笔者用VB 开发了一套PC 机上的短消息收发软件,本文根据笔者的实际开发经验整理而得。文中介绍了在计算机上实现短消息收发的模式,重点描述了PDU 模式,包括PDU 模式下的UCS2 编码、解码原理,以及发送与接收PDU 串的编制方式,在此基础上介绍了利用VB 中的MSCOMM 控件,实现短消息收发的核心程序。关键字:短消息收发、PDU 模式、UCS2 编解码、U 阅读详情

VB实现ADSL自动拨号的2种方法
方法1:

Private Sub Command1_Click()
shell "rasdial <连接名称> <连接用户名> <连接密码>"
End Sub

方法2:

1、第一个问题还要添上连接名(就是拨号连接的名字)
我这里有一个现成的代码,挺长的,能上网、断网、查看网络状态、查看连接数目,如果其它的不需要的话,自己看函数的名字,删了即可
把一下代码粘贴到模块中,在窗体某控件的时间中写:
Dim recAdConn&
recAdConn = AddConnection("连接名", "", "", "用户名", "密码", "")
Public Type RASCONN95
dwSize As Long
hRasConn As Long
szEntryName(256) As Byte
szDeviceType(16) As Byte
szDeviceName(128) As Byte
End Type
Public Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(16) As Byte
szDeviceName(128) As Byte
End Type
Public Declare Function RasGetConnectStatus Lib "RasApi32.DLL" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long
Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, ByVal lpString2 As String) As Long
Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long
Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Public Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long

Public Function AddConnection(strNewEntryName As String, strNewPhoneNumber As String, strNewCallbackNumber As String, strNewUsername As String, strNewPassword As String, strNewDomain As String) As Long
Const APINULL = 0&
Dim lngRetCode As Long
Dim lngRetLstrcpy As Long
Dim lngRetHangUp As Long
Dim lprasdialparams As RASDIALPARAMS95
On Error GoTo 10
lprasdialparams.dwSize = 1052
lngRetLstrcpy = lstrcpy(lprasdialparams.szEntryName(0), strNewEntryName)
lngRetLstrcpy = lstrcpy(lprasdialparams.szPhoneNumber(0), strNewPhoneNumber)
lngRetLstrcpy = lstrcpy(lprasdialparams.szCallbackNumber(0), strNewCallbackNumber)
lngRetLstrcpy = lstrcpy(lprasdialparams.szUserName(0), strNewUsername)
lngRetLstrcpy = lstrcpy(lprasdialparams.szPassword(0), strNewPassword)
lngRetLstrcpy = lstrcpy(lprasdialparams.szDomain(0), strNewDomain)
Screen.MousePointer = vbHourglass
hRasConn = 0
lngRetCode = RasDial(ByVal APINULL, vbNullString, lprasdialparams, APINULL, ByVal APINULL, hRasConn)
Screen.MousePointer = vbDefault
If lngRetCode Then
lngRetHangUp = RasHangUp(hRasConn)
End If
10
AddConnection = lngRetCode
End Function

Public Function GetConnections() As Long
Dim lngRetCode As Long
Dim lpcb As Long
Dim lpcConnections As Long
Dim intArraySize As Long

ReDim lprasconn95(intArraySize) As RASCONN95
lprasconn95(0).dwSize = 412
lpcb = 256 * lprasconn95(0).dwSize
lngRetCode = RasEnumConnections(lprasconn95(0), lpcb, lpcConnections)
GetConnections = lpcConnections
End Function

Public Function HangUpAll() As Boolean
Dim lngRetCode As Long
Dim lpcb As Long
Dim lpcConnections As Long
Dim intArraySize As Long
Dim intLooper As Long

ReDim lprasconn95(intArraySize) As RASCONN95
lprasconn95(0).dwSize = 412
lpcb = 256 * lprasconn95(0).dwSize
lngRetCode = RasEnumConnections(lprasconn95(0), lpcb, lpcConnections)

If lngRetCode = 0 Then
If lpcConnections > 0 Then
For intLooper = 0 To lpcConnections - 1
RasHangUp lprasconn95(intLooper).hRasConn
Next intLooper
Else
HangUpAll = False
Exit Function
End If
End If
HangUpAll = True
End Function
Public Function IsConnected() As Boolean
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95
TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasConn, Tstatus)
IsConnected = IIf(Tstatus.RasConnState = &H2000, True, False)
End Function

2、查看当前IP
没有现成的代码,网上应该有的是吧!自己查一查
http://www.baidu.com/s?wd=VB+%B2%E9%BF%B4%B5%B1%C7%B0IP&cl=3

3、断网:第一个问题中已经说了,调用:
在控件事件中写
HangUpAll
完事

方法3:

Option Explicit
Public hRasConn As Long '定义一个指向RAS调用的全局句柄
Public Const APINULL = 0&
Public Const UNLEN = 256
Public Const DNLEN = 15
Public Const PWLEN = 256
Public Const RAS95_MaxPhoneNumber = 128
Public Const RAS95_MaxEntryName = 256
Public Const RAS95_MaxCallbackNumber = RAS95_MaxPhoneNumber

'dwSize表示该结构的大小(以字节为单位)。
'szEntryName表示一个远程访问的入口名,也就是WINDOWS下的拨号网络中的连接图标小的文字;
'szEntryName参数可是是空串,表示仅与第一个有效的MODEM建立远程连接。
'szPhoneNumber为表示呼叫的号码。当szEntryName是空时,
'zPhoneNumber不能为空。szCallbackNumber表示回叫号码,一般都设为空。szUserName为建立远程访问的用户名。
'szPassword为建立远程访问的密码。szDomain为进行远程访问用户名和密码认证的域名。
'我们将szDomain设为空,表示远程访问的服务器也是该域名下的成员
Public Type RASDIALPARAMS95
dwSize As Long
szEntryName(RAS95_MaxEntryName) As Byte
szPhoneNumber(RAS95_MaxPhoneNumber) As Byte
szCallbackNumber(RAS95_MaxCallbackNumber) As Byte
szUserName(UNLEN) As Byte
szPassword(PWLEN) As Byte
szDomain(DNLEN) As Byte
End Type
'**********************************
'* RAS调用错误代号 *
'**********************************
Public Const NOT_SUPPORTED = 120&
Public Const RASBASEERROR = 600&
Public Const SUCCESS = 0&
Public Const ERROR_PORT_ALREADY_OPEN = (RASBASEERROR + 2)
Public Const ERROR_UNKNOWN = (RASBASEERROR + 35)
Public Const ERROR_REQUEST_TIMEOUT = (RASBASEERROR + 38)
Public Const ERROR_PASSWD_EXPIRED = (RASBASEERROR + 48)
Public Const ERROR_NO_DIALIN_PERMISSION = (RASBASEERROR + 49)
Public Const ERROR_SERVER_NOT_RESPONDING = (RASBASEERROR + 50)
Public Const ERROR_UNRECOGNIZED_RESPONSE = (RASBASEERROR + 52)
Public Const ERROR_NO_RESPONSES = (RASBASEERROR + 60)
Public Const ERROR_DEVICE_NOT_READY = (RASBASEERROR + 66)
Public Const ERROR_LINE_BUSY = (RASBASEERROR + 76)
Public Const ERROR_NO_ANSWER = (RASBASEERROR + 78)
Public Const ERROR_NO_CARRIER = (RASBASEERROR + 79)
Public Const ERROR_NO_DIALTONE = (RASBASEERROR + 80)
Public Const ERROR_AUTHENTICATION_FAILURE = (RASBASEERROR + 91)
Public Const ERROR_PPP_TIMEOUT = (RASBASEERROR + 118)
'**********************************
'* RAS API 声明 *
'**********************************
Public Declare Function RasDial Lib "RasApi32.DLL" Alias "RasDialA" (lpRasDialExtensions As Any, ByVal lpszPhonebook As String, lprasdialparams As Any, ByVal dwNotifierType As Long, lpvNotifier As Long, lphRasConn As Long) As Long
'RASHANGUP函数用于断开一个RAS连接。其参数hRasConn为指向一个RAS连接的句柄
Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Public Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, ByVal lpString2 As String) As Long

Public Function AddConnection(strNewEntryName As String, strNewPhoneNumber As String, strNewCallbackNumber As String, strNewUsername As String, strNewPassword As String, strNewDomain As String) As Integer
Dim lngRetCode As Long
Dim lngRetLstrcpy As Long
Dim lngRetHangUp As Long
Dim lprasdialparams As RASDIALPARAMS95
lprasdialparams.dwSize = 1052
'在WINDOWS95/98中必须将dwSize设为1052'利用lstrcpy函数将字符串拷贝到BYTE数组
lngRetLstrcpy = lstrcpy(lprasdialparams.szEntryName(0), strNewEntryName)
lngRetLstrcpy = lstrcpy(lprasdialparams.szPhoneNumber(0), strNewPhoneNumber)

lngRetLstrcpy = lstrcpy(lprasdialparams.szCallbackNumber(0), strNewCallbackNumber)
lngRetLstrcpy = lstrcpy(lprasdialparams.szUserName(0), strNewUsername)
'MsgBox (lprasdialparams.szUserName(0))
lngRetLstrcpy = lstrcpy(lprasdialparams.szPassword(0), strNewPassword)
lngRetLstrcpy = lstrcpy(lprasdialparams.szDomain(0), strNewDomain)
'我们使用同步通信
Screen.MousePointer = vbHourglass
hRasConn = 0
lngRetCode = RasDial(ByVal APINULL, vbNullString, lprasdialparams, APINULL, ByVal APINULL, hRasConn)
Screen.MousePointer = vbDefault
'测试有没有错误
If lngRetCode Then
lngRetHangUp = RasHangUp(hRasConn)
End If
AddConnection = lngRetCode
End Function
Public Sub RemoveConnection(H_RasConn As Long)
Call RasHangUp(hRasConn)
End Sub 
 ⊕本文来自: 360安全网(www.hack59.com) 详细出处参考:http://www.hack59.com/news/bc/VB/2009101311261045.html

 

基于VB+ACCESS的网络计时管理系统的设计与实现 为了实现用户接入网的数字化、宽带化,提高用户上网速度,光纤到户(FTTH)是用户网今后发展的必然方向,但由于光纤用户网的成本过高,在今后的十几年甚至几十年内大多数用户网仍将继续使用现有的铜线环路,于是近年来人们提出了多项过渡性的宽带接入网技术,包括N-ISDN、Cable Modem、ADSL等等,其中ADSL(非对称数字用户环路)是最具前景及竞争力的一种,将在未来十几年甚至几十年内占主导地位。上网记录查询模块使用户可以浏览每次上网用时的记录,包括上网日期,起始时间,下网的时间,本次用时等信息。 阅读详情

相关推荐

VB+ACCESS网络计时管理系统设计(源代码+系统)

为了实现用户接入网的数字化、宽带化,提高用户上网速度,光纤到户(FTTH)是用户网今后发展的必然方向,但由于光纤用户网的成本过高,在今后的十几年甚至几十年内大多数用户网仍将继续使用现有的铜线环路,于是近年来人们提出了多项过渡性的宽带接入网技术,包括N-ISDN、Cable Modem、ADSL等等,其中ADSL(非对称数字用户环路)是最具前景及竞争力的一种,将在未来十几年甚至几十年内占主导地位。⑷ 针对上网情况用统计图进行分析,让用户的上网行为一目了然,如每个用户的上网时间统计,本月上网用时统计。

2301_76992670的博客 285

打电话例子

最近因工作需要,写了一个类似于手机拨打电话的例子,包括拨打电话,查找通讯录和通话记录。

VB程序实现ADSL自动上线下线

本文还有配套的精品资源,点击获取 简介:本课程设计项目旨在通过VB编程语言实现ADSL宽带连接自动控制,无需使用路由器。通过编写代码,学生将学习如何使用VB操作ADSL调制解调器,实现自动上线和下线功能。该项目将帮助学生掌握VB网络编程的基础知识,了解ADSL技术原理,并为未来在网络管理领域的实践打下基础。 1. ADSL技术简介 ADSL(非对称数字用...

weixin_30765637的博客 922

拨号软件及源码,通过电脑上的modem来拨号打电话VB源码,简单示例,用于学习,了解原理不错

通过电脑上的modem来拨号打电话VB源码,简单示例,用于学习,了解原理不错。同时支持蓝牙modem,在老式诺基亚手机上成功拨打过。

[VB.NET]请问高手如何用VB2005调用系统默认连接实现自动拨号,谢谢!

<!--google_ad_client = "pub-8333940862668978";/* 728x90, 创建于 08-11-30 */google_ad_slot = "4485230109";google_ad_width = 728;google_ad_height = 90;//--><script type="text/javascript"

VB.NET学习网-VB.NET实例、VB.NET教程、VB.NET源码下载 804

VB实现宽带自动拨号完整源码项目

Visual Basic(VB)虽以快速开发著称,但其通过API调用机制可深入操作系统底层,实现如宽带拨号等系统级网络操作。尤其在Windows XP至Win10早期版本中,VB6.0结合RAS(Remote Access Service)API,能高效完成PPP拨号连接的建立、监控与管理。要真正掌握 RAS 的工作机制,必须了解其依赖的核心协议——点对点协议(Point-to-Point Protocol, PPP)。

weixin_35756637的博客 895

vb实现ADSL拨号

VB6.0代码 1、第一个问题还要添上连接名(就是拨号连接的名字) 我这里有一个现成的代码,挺长的,能上网、断网、查看网络状态、查看连接数目,如果其它的不需要的话,自己看函数的名字,删了即可 把一下代码粘贴到模块中,在窗体某控件的时间中写: Dim recAdConn& recAdConn = AddConnection("连接名", "", "", "用户名", "密码", &qu

Windows SDK 299

VB 利用rasdial实现宽带拨号连接.

VB 利用rasdial实现宽带拨号连接.

一个VB6试例代码--ADSL拨号面板

VB6的一个试例代码 VB6写的一个很简单的ADSL拨号面板,给不太懂电脑的人拨号的一个界面。包含,RSS拨号断开,获取系统文件夹路径,XP下的系统托盘,VB6实现窗口消息处理函数的实例代码,API的调用 更新的版本在 http://download.csdn.net/source/2923218

adsl 宽带 拨号 VB 编写

adsl 宽带 拨号 断线 工具 VB 编写 ADSL循环投票的关键

VB 制作的 宽带自动拨号 源码

VB 制作的 宽带自动拨号 源码 简单好用 有源码 ,欢迎下载!

VBS 宽带拨号脚本

VBS宽带拨号脚本VBS宽带拨号脚本VBS宽带拨号脚本VBS宽带拨号脚本VBS宽带拨号脚本

强烈推荐:C#/VB.NET 下最好的RAS拨号程序

以前控制ADSL拨号我一直用的是RasDisplay,也是一个老外写的封装Ras拨号类,它的优点是不需要输入任何参数,可以直接从系统中调出默认的拨号连接。 不过最近我的程序在运行了2天后,提示图形缓存写入失败,崩了。很奇怪的是,我没有用任何图像相关的函数……在网上搜了一大圈,发现MSDN有个专门讨论的帖子,认为这是一个隐藏的.net bug,原因可能是因为GDI对象数太多引起的。于是开了T

来自荷兰的老鼠窝 2187

vb.net adsl播号 rasdial命令的使用

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click         If InStr(Run("c:\windows\system32\rasdial", "adsl username password"), "命令已完成") > 0

编程技术交流/记录/分享/资源共享 1105

编程获取ADSL下的IP地址

一、需求:   由于系统调试需要一个相对的公网IP,但公司是通过ADSL方式上网,每次产生的IP只能保持一段时间相对固定,当IP发生变化后,就需要打开路由器的WEB管理界面,确定新的IP地址是多少,然后将新地址告诉测试系统使用。每次都这样操作,让我这种懒人,感觉很不爽。于是一直在想寻找一种简单的方式,来很容易的知道当前IP地址是多少,这期间尝试了许多方法,但都只是限于获取本机网络地址信息,对要解...

weixin_34223655的博客 141
上一篇: 在VB6中使用API函数实现矢量图的绘制
下一篇: AT 语音命令
VBWinner
博客等级 码龄16年 2粉丝 3原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值