вот у меня такая проблема, мне нужно узнать, подключён-ли компьютер к интернету, в библиотеке кодов я отрыл вот такой код:
Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long Private Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long Private Const RAS95_MaxEntryName = 256 Private Const RAS95_MaxDeviceType = 16 Private Const RAS95_MaxDeviceName = 32 Private Type RASCONN95 dwSize As Long hRasCon As Long szEntryName(RAS95_MaxEntryName) As Byte szDeviceType(RAS95_MaxDeviceType) As Byte szDeviceName(RAS95_MaxDeviceName) As Byte End Type Private Type RASCONNSTATUS95 dwSize As Long RasConnState As Long dwError As Long szDeviceType(RAS95_MaxDeviceType) As Byte szDeviceName(RAS95_MaxDeviceName) As Byte End Type
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).hRasCon, Tstatus) If Tstatus.RasConnState = &H2000 Then IsConnected = True Else IsConnected = False End If End Function
Private Sub Form_Load() 'если есть соединение, то IsConnected() = True, иначе False MsgBox IsConnected() End Sub
всё осложняеться тем, что я подключаюсь к интернету через другой компьютер, то-биш через локальную сеть, и мне выдаёт что IsConnected = False , пожалуйста помогите передалать код ак, чтобы он учитывал и локальную сеть, сам я к сожалению в этом не разумею :((
' Вот что-то должно быть такое, для InternetGetConnectedStateEx ' Для InternetGetConnectedState практически то же, но вот имя соединения - не возвращает! ' Только я не знаю как это ведет себя при подкл. по LAN ' И еще, для той что Ex требуется IE5.0
Option Explicit
Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" Alias "InternetGetConnectedStateExA" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Long, ByVal dwReserved As Long) As Long Private Declare Function GetProfStr Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal sSection As String, ByVal sKey As Any, ByVal sDefault As String, ByVal sValue As String, ByVal nSize As Long, ByVal sFileName As String) As Long Private Const INTERNET_CONNECTION_MODEM = &H1& Private Const INTERNET_CONNECTION_LAN = &H2& Private sConName As String, bIsConnected As Boolean, sDeviceType As String
Public Sub xxx() Dim dwFlags As Long, Msg As String, lPos As Long
sConName = String$(513, 0)
If InternetGetConnectedStateEx(dwFlags, sConName, 512, 0&) Then bIsConnected = True