Newsgroup: it.comp.lang.visual-basic
Titolo: RAS ed esito della connession

Sto usando RAS per effettuare delle connessioni.
Ma come faccio a sapere se la connessione è andata a buon fine.
Io uso questa funzione che però mi ritorna TRUE ancora prima che si
colleghi.
Public Function StatusConnection(NomeConn As String) As Boolean
Dim i As Integer
Dim RASConnN_Size As Long, RASConnN_Numb As Long
Dim bbb As String
Dim aaa As Variant
ReDim RASCon(255) As RASCONN
RASCon(0).dwSize = 412
RASConnN_Size = 256 * RASCon(0).dwSize
aaa = RasEnumConnections(RASCon(0), RASConnN_Size, RASConnN_Numb)
For i = 0 To RASConnN_Numb - 1
    bbb = StrConv(RASCon(i).szEntryName(), vbUnicode)
    bbb = Left(bbb, InStr(bbb, Chr(0)) - 1)
    If bbb = NomeConn Then
        StatusConnection = True
        Exit Function
    End If
Next
StatusConnection = False
End Function

mmmmm, non so perché ma qual codice l'ho già visto da qualche parte..... ;-)))))
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)
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------