Newsgroup: it.comp.lang.visual-basic
Titolo: [?]-Controllare passo-passo Connessione

Dunque, se utilizzo un'istruzione del tipo:
  RetCode = Shell("rundll32.exe rnaui.dll,RnaDial " & NomeConnessione, 1)
posso avviare una connessione con Accesso Remoto.
Il mio problema è di capire se questa è andata a buon fine, per poter poi
chiudere automaticamente la form che ha consentito la connessione ed avviarne
un'altra che effettua alcune operazioni di navigazione sulla rete.
Potrei verificare lo stato della connessione con una certa frequenza per vedere
quando la connessione è stata stabilita, ma se l'utente pigia 'Annulla' sulla
form di accesso remoto, come me ne accorgo? 
Chiudere per TimeOut non mi piace granchè.
In conclusione vorrei poter controllare lo stato del processo di connessione
passo-passo (o almeno l'esito).
L'ideale sarebbe fare qualcosa come su Outlook Espress, dove la connessione
viene effettuata indicandone anche tutte le fasi intermedie. 
Ho già provato con RasDial, ma senza successo, anche perchè devo fornire
UserName e Password che variano da utente ad utente, già specificate nella
Phonebook entry
del NomeConnessione.
Che faccio?
Grazzzzie per l'aiuto!!!
P.S. Io ho scaricato (con molte difficoltà) il Microsoft® Win32® Programmer's
Reference 
da non ricordo più dove. Sicuramente (io arrivo sempre ultimo) ce l'avrete tutti
e magari
è anche già disponibile sul sito comune (non ho guardato).  Non posso passarlo
direttamente
ad eventuali interessati tramite mail perchè è di oltre 8 Mbytes zippato (oltre
12M unzippato), 
ma se servisse per il sito comune in qualche modo ve lo faccio avere.
-- 
Bepi
mailto:
be...@mwire.net

> Il mio problema è di capire se questa è andata a buon fine, per poter poi chiudere automaticamente la form che ha consentito la connessione ed 
Ciao!
Ti riporto un messaggio di Moreno Sirri apparso qualche settimana fa 
:(  sun newsgroup, e che mi e' stato di grande aiuto.
Ciao
Brando
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