Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230

    [VB6] Stato della connessione internet.

    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-

  2. #2
    Ciao mvent, conosco una soluzione molto più semplice per risolvere codesto problema ma purtroppo in questo pc non ho visual basic..cmq domani mattina (o se ce la faccio stasera stessa) ti posto il codice completo..ciao

  3. #3
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230
    grazie !

  4. #4
    DICHIARAZIONI DA INSERIRE IN UN MODULO:
    Public Declare Function InternetGetConnectedState Lib "wininet" ecc.
    Public Const CONNECT_LAN
    Public Const CONNECT_MODEM
    Public Const CONNECT_PROXY
    Public Const CONNECT_OFFLINE
    Public Const CONNECT_CONFIGURED
    'anche questi con i rispettivi valori..

    Public Function IsConnected(Optional Byref sconntype as string)as Boolean
    dim dwflags as Long
    dim webtest as boolean

    sconntype = " "
    bconnected = Internetgetconnectedstate(dwflags,0&)

    Select case bconnected
    case dwflags and connect_lan
    sconntype = "LAN"
    case dwflags and connect_modem
    sconntype = "MODEM"
    case dwflags and connect_proxy
    sconntype = "PROXY"
    case dwflags and connect_offline
    sconntype = "OFFLINE"
    case dwflags and connect_configured
    sconntype = "CONFIGURED"
    case else
    sconntype = "Remote"
    end select

    isconnected = bconnected

    end function

    SE VUOI CONTROLLARE OGNI TOT DI TEMPO INSERISCI IL CODICE SOTTOSTANTE NELL'EVENTO TIMER
    dim smsg as string
    dim sconntype as string

    if isconnected(sconntype) then
    smsg = "Sei connesso ad Internet tramite " & sconntype & "."
    else
    smsg = "Non sei connesso ad Internet"
    end if
    Msgbox smsg,vbOkOnly,"Stato della Connessione Internet"
    end sub
    ============================
    Dovrebbe funzionare tranquillamente, altrimenti scrivi di nuovo..(non ho preso il codice da vb ma l'ho scritto senza uso del programma quindi ci potrebbero essere errori di scrittura di alcune variabili, ti prego di controllare tanto il listato non è lungo..ciao

  5. #5
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230
    sì quel codice che mi hai dato mi funziona..però non mi da le informazioni che voglio.
    il codice che mi hai postato mi dice se sono connesso (e tramite cosa)o non sono connesso....
    questo gia riesco ad ottenerlo con le api di cui ho scritto, con del codice che non ho inserito nel mio post perchè tanto mi funziona.

    a me interessa esattamente sapere lo stato della connessione.
    per esempio se si trova nello stato di "Attempting To Open Port..." oopure di "Port Successfully Opened" oppure di "Attempting to Connect Device..." oppure di "Device Opened" oppure di "Authenticating..." oppure di "Authenticated" eccetera...
    a quanto ne sò queste informazioni le posso sapere solo con quel codice che ho postato, ma non capisco se ho tralasciato qualcosa o fatto qualche errore...dato che che mi dice che si trova sempre nello stato di "Attempting To Open Port..."
    ma ripeto, se sono connesso oppure non lo sono, iresco a saperlo da altre parti di codice che mi funzionano.

  6. #6
    Utente di HTML.it L'avatar di mvent
    Registrato dal
    Jun 2002
    Messaggi
    230
    allora non lo sà nessuno?
    l'accendiamo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.