调用系统默认拨号程序 ==================== Option Explicit '有关注册的API声明 Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long '常数 Const HKEY_CURRENT_USER = &H80000001 Const ERROR_SUCCESS = 0&
Private Sub cmdCallConnect_Click() '启动默认拨号连接 Shell "rundll rnaui.dll,RnaDial " + GetConnect, vbNormalFocus End Sub
Public Function GetConnect() As String Dim hKey As Long Dim SubKey As String hKey = HKEY_CURRENT_USER '主键 SubKey = "RemoteAccess" '子键 '取得默认连接名 GetConnect = GetRegValue(hKey, SubKey, "Default") End FunctionPublic Function GetRegValue(hKey As Long, lpszSubKey As String, szKey As String) As Variant On Error GoTo ErrorRoutineErr: Dim phkResult As Long Dim lResult As Long Dim szBuffer As String Dim lBuffSize As Long '创建缓冲区 szBuffer = Space(255) lBuffSize = Len(szBuffer) '打开注册键 RegOpenKeyEx hKey, lpszSubKey, 0, 1, phkResult '查询结果 lResult = RegQueryValueEx(phkResult, szKey, 0, 0, szBuffer, lBuffSize) '关闭注册键 RegCloseKey phkResult '返回结果 If lResult = ERROR_SUCCESS Then GetRegValue = Left(szBuffer, lBuffSize - 1) Else GetRegValue = "" End If Exit Function ErrorRoutineErr: GetRegValue = "" End Function ============================ 显示拨号网络中的每一个链接名 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
单纯检测是否在线 Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As LongPrivate Sub Form_Load() Timer1.Interval = 1 End SubPrivate Sub Timer1_Timer() Me.Caption = IIf(InetIsOffline(0&), "离线", "在线") End Sub
====================
Option Explicit
'有关注册的API声明
Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
'常数
Const HKEY_CURRENT_USER = &H80000001
Const ERROR_SUCCESS = 0&
Private Sub cmdCallConnect_Click()
'启动默认拨号连接
Shell "rundll rnaui.dll,RnaDial " + GetConnect, vbNormalFocus
End Sub
Public Function GetConnect() As String
Dim hKey As Long
Dim SubKey As String
hKey = HKEY_CURRENT_USER '主键
SubKey = "RemoteAccess" '子键
'取得默认连接名
GetConnect = GetRegValue(hKey, SubKey, "Default")
End FunctionPublic Function GetRegValue(hKey As Long, lpszSubKey As String, szKey As String) As Variant
On Error GoTo ErrorRoutineErr:
Dim phkResult As Long
Dim lResult As Long
Dim szBuffer As String
Dim lBuffSize As Long
'创建缓冲区
szBuffer = Space(255)
lBuffSize = Len(szBuffer)
'打开注册键
RegOpenKeyEx hKey, lpszSubKey, 0, 1, phkResult
'查询结果
lResult = RegQueryValueEx(phkResult, szKey, 0, 0, szBuffer, lBuffSize)
'关闭注册键
RegCloseKey phkResult
'返回结果
If lResult = ERROR_SUCCESS Then
GetRegValue = Left(szBuffer, lBuffSize - 1)
Else
GetRegValue = ""
End If
Exit Function
ErrorRoutineErr:
GetRegValue = ""
End Function
============================
显示拨号网络中的每一个链接名
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
Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As LongPrivate Sub Form_Load()
Timer1.Interval = 1
End SubPrivate Sub Timer1_Timer()
Me.Caption = IIf(InetIsOffline(0&), "离线", "在线")
End Sub
先试检测是否在线
马上回来送分 呵呵
就是我的软件想有自动update功能
如果用户能上网呢 我就到我的网站上去看有无最新的版本 有则自动升级
要是用户不能上网呢 就不用企图登陆我的网站了
在Win2k下 用户不能上网,登陆网站就错误 我忽略就可以了
但在XP下,却调出自动拨号的窗口 由于我是定时检测 所以总是调出 很烦的
BlueBeer(1win) 老兄 怎么我断开了 还是检测成在线啊 我在Win2K下
结贴