Newsgroup: it.comp.lang.visual-basic
Titolo: ancora collegamento internet (grave)

Salve,
ho letto la GESTIONE DELLE CONNESSIONI TRAMITE RAS API di Moreno Sirri, mi č
stato molto utile ma ho un problema:
la mia applicazione prima si deve collegare e poi spedire della posta,
solo che se uso le ras api per verificare la connessione mi risulta che
lpcConnections =1 prima che accesso remoto abbia finito di comporre il
numero qundi la mia applicazione prova a spedire la posta ritenendosi
connessa ma da un bell'errore in quanto ancora completamente connessa non
č....
Come devo fare ?
Grazie Mille.
A proposito ho anche provato a sfruttare la proprietą localip dei winsock ma
l'ip quando č sconnesso č = 127.0.0.1 e se faccio un while
winsock1.localip="127.0.0.1 " wend l'applicazione si inchioda perchč rileva
il nuovo ip (una volta connesso) solo riavviano l'applicazione.
C'e' almeno il modo di togliere di mezzo quel maledetto 127.0.0.1
Rigrazie.

Allora, c'è un'altro modo per stabilire se una connessione è attiva:
Public Const ERROR_SUCCESS = 0&
Public Const APINULL = 0&
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public ReturnCode As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String,
phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As
String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Public Function ActiveConnection() As Boolean
    Dim hKey As Long
    Dim lpSubKey As String
    Dim phkResult As Long
    Dim lpValueName As String
    Dim lpReserved As Long
    Dim lpType As Long
    Dim lpData As Long
    Dim lpcbData As Long
    ActiveConnection = False
    lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
    ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, phkResult)
 
    If ReturnCode = ERROR_SUCCESS Then
        hKey = phkResult
        lpValueName = "Remote Connection"
        lpReserved = APINULL
        lpType = APINULL
        lpData = APINULL
        lpcbData = APINULL
        ReturnCode = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, ByVal lpData, lpcbData)
        lpcbData = Len(lpData)
        ReturnCode = RegQueryValueEx(hKey, lpValueName, lpReserved, lpType, lpData, lpcbData)
        If ReturnCode = ERROR_SUCCESS Then
            If lpData = 0 Then
                ActiveConnection = False
            Else
                ActiveConnection = True
            End If
        End If
    RegCloseKey (hKey)
    End If
End Function
If ActiveConnection = True Then
	'C'è una connessione attiva
Else
	'Non c'è nessuna connessione attiva
End If
A differenza delle RAS API, in questo modo la connessione risulta "aperta" non appena l'icona di Accesso Remoto di
installa nella System Tray, quindi con un leggero ritardo. Comunque, per quello che vuoi fare tu, forse è la soluzione
migliore...
Ciao,
Moreno
#sirri#@
tin.it
(togliete "#" dall'indirizzo)

Comunque, per quello che vuoi fare tu, forse è la soluzione>migliore...
Credo che questa info debba trovare posto nel tuo articolo, che dici? :-))
Ciao
By -MES-   Maronese Ettore
http://ilmes.freeweb.org
(con OCX per stampare i recordset)
Sito Comune di programmatori Visual Basic
http://www.murialdo.it/it_lang_vb

>Credo che questa info debba trovare posto nel tuo articolo, che dici? :-))
mmm, però l'articolo tratta delle RAS API....... vabbé, vedremo....
