salve a tutti.
utilizzo le API ....
codice:
Public Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long
Public Declare Function RasGetConnectStatus Lib "RasApi32.DLL" Alias "RasGetConnectStatusA" (ByVal hRasConn As Long, lpRASCONNSTATUS As RASCONNSTATUS) As Long
Public Declare Function RasHangUp Lib "RasApi32.DLL" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
Public Declare Function RasGetErrorString Lib "RasApi32.DLL" Alias "RasGetErrorStringA" (ByVal uErrorValue As Long, ByVal lpszErrorString As String, ByVal cBufSize As Long) As Long
...per conoscere lo stato della connessione internet.
ho un form nel quale è presente una listview; ho anche un timer.
ogni 5 secondi controllo lo stato della connesione a internet, e metto il risultato nella listview.
per capire meglio
avrete sicuramente presente che quando vi collegate a internet, di solito c'è una finestra che espone le varie fasi:
composizione numero in corso...
apertura della porta
autenticazione
sì insomma una cosa del genere, non mi ricordo i messaggi precisi.
ecco appunto.
il problema è che la funzione API che utilizzo da sempre lo stesso risultato: "attempting to open port".
non capisco perchè.
ecco il codice che è inserito nell'evento timer.
codice:
Call RasGetConnectStatus(RAsCo, lpRASCONNSTATUS)
STATOCONN = "..........."
If Not lpRASCONNSTATUS.dwError Then
Select Case lpRASCONNSTATUS.RASCONNSTATE
Case RASCS_OpenPort: STATOCONN = "Attempting To Open Port..."
Case RASCS_PortOpened: STATOCONN = "Port Successfully Opened"
Case RASCS_ConnectDevice: STATOCONN = "Attempting to Connect Device..."
Case RASCS_DeviceConnected: STATOCONN = "Device Opened"
Case RASCS_AllDevicesConnected: STATOCONN = "All Devices Connected"
Case RASCS_Authenticate: STATOCONN = "Authenticating..."
Case RASCS_AuthNotify: STATOCONN = "Authentication Notification"
Case RASCS_AuthRetry: STATOCONN = "Retrying Authentication..."
Case RASCS_AuthCallback: STATOCONN = "Authentication Callback"
Case RASCS_AuthChangePassword: STATOCONN = "Change Password"
Case RASCS_AuthProject: STATOCONN = "Authenticating Project.."
Case RASCS_AuthLinkSpeed: STATOCONN = "Authenticating Link Speed.."
Case RASCS_AuthAck: STATOCONN = "Athentication Acknowlegement"
Case RASCS_ReAuthenticate: STATOCONN = "ReAuthentication..."
Case RASCS_Authenticated: STATOCONN = "Authenticated"
Case RASCS_PrepareForCallback: STATOCONN = "Prepare For Callback"
Case RASCS_WaitForModemReset: STATOCONN = "Waiting For Modem Rest..."
Case RASCS_WaitForCallback: STATOCONN = "Waiting For Callback..."
Case RASCS_Projected: STATOCONN = "Network Completely Configured"
'--- Le voci seguenti sono valide solo per Windows 9x
Case RASCS_StartAuthentication: STATOCONN = "Attempting to Open Port"
Case RASCS_CallbackComplete: STATOCONN = "Callback Completed"
Case RASCS_LogonNetwork: STATOCONN = "Logging On To Network"
'---
Case RASCS_Interactive: STATOCONN = "Interactive"
Case RASCS_RetryAuthentication: STATOCONN = "Retry Authentication"
Case RASCS_CallbackSetByCaller: STATOCONN = "CallBack Set By Caller"
Case RASCS_PasswordExpired: STATOCONN = "Password Expired"
Case RASCS_Connected: STATOCONN = "Connected"
Case RASCS_Disconnected: STATOCONN = "Disconnected"
Case Else: STATOCONN = "Unknown State"
End Select
Else
Select Case lpRASCONNSTATUS.dwError
Case Is >= RASBASE
If Not RasGetErrorString(RASErrorNumber, strRASErrorString, 256&) Then STATOCONN = strRASErrorString
Case NOT_SUPPORTED: STATOCONN = "Funzione non supportata in questa versione di Windows"
Case Else: STATOCONN = "Errore inaspettato"
End Select
Call RasHangUp(RAsCo)
End If
Call Aggiungi_a_ListView(STATOCONN, 2)
in altre parole la variabile lpRASCONNSTATUS.RASCONNSTATE risultante dalla chiamata API è sempre uguale a 0.
(la costante RASCS_OpenPort = 0)
ecco la parte delle dichiarazioni
codice:
Public Type RASCONN
dwSize As Long
hRasConn As Long
szEntryName(265) As Byte
szDeviceType(16) As Byte
szDeviceName(128) As Byte
End Type
Enum RASCONNSTATE
RASCS_OpenPort = 0
RASCS_PortOpened = 1
RASCS_ConnectDevice = 2
RASCS_DeviceConnected = 3
RASCS_AllDevicesConnected = 4
RASCS_Authenticate = 5
RASCS_AuthNotify = 6
RASCS_AuthRetry = 7
RASCS_AuthCallback = 8
RASCS_AuthChangePassword = 9
RASCS_AuthProject = 10
RASCS_AuthLinkSpeed = 11
RASCS_AuthAck = 12
RASCS_ReAuthenticate = 13
RASCS_Authenticated = 14
RASCS_PrepareForCallback = 15
RASCS_WaitForModemReset = 16
RASCS_WaitForCallback = 17
RASCS_Projected = 18
RASCS_StartAuthentication = 19
RASCS_CallbackComplete = 20
RASCS_LogonNetwork = 21
RASCS_SubEntryConnected = 22
RASCS_SubEntryDisconnected = 23
RASCS_Interactive = &H1000
RASCS_RetryAuthentication = &H1001
RASCS_CallbackSetByCaller = &H1002
RASCS_PasswordExpired = &H1003
RASCS_InvokeEapUI = &H1004
RASCS_Connected = &H2000
RASCS_Disconnected = &H2001
End Enum
Public Type RASCONNSTATUS
dwSize As Long
RASCONNSTATE As RASCONNSTATE
dwError As Long
szDeviceType As String * 16
szDeviceName As String * 128
End Type
Public lpRASCONNSTATUS As RASCONNSTATUS, RASConnN_Size As Long
Public STATOCONN As String, RAsCo as long
Public RASErrorNumber As Long
Public strRASErrorString As String
Public Const RASBASE = 600&
Public Const SUCCESS = 0&
Public Const PENDING = (RASBASE + 0)
Public Const RASBASEEND = (RASBASE + 150)
spero che qualcuno sappia aiutarmi-