salve a tutti.
utilizzo le API ....
...per conoscere lo stato della connessione internet.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
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.
in altre parole la variabile lpRASCONNSTATUS.RASCONNSTATE risultante dalla chiamata API è sempre uguale a 0.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)
(la costante RASCS_OpenPort = 0)
ecco la parte delle dichiarazioni
spero che qualcuno sappia aiutarmi-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)

Rispondi quotando