Newsgroup: it.comp.lang.visual-basic
Titolo: API - RegOpenKey (VB4)

Salve a tutti, ho un problema con una "APE" che non ronza.
Devo controllare se è attiva una connessione in Accesso Remoto.
Ho preso lo spunto su WIN31WH.HLP del VB3 cambiando la dichiarazione, ma la
chiamata è identica.
Riporto qui un pezzo del PGM
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal _
    hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Dim lpSubKey As String
Dim phkResult As Long
lpSubKey = "System\CurrentControlSet\Services\RemoteAccess"
ReturnCode = RegOpenKey(HKEY_LOCAL_MACHINE, lpSubKey, phkResult)
ReturnCode è sempre = 1010 il maledetto, mentre penso dovrebbe essere 0,
dove sbaglio?????
Grazie 1K
Walter



 a fatto scrivere dall'infermiere della
casa di cura le seguenti parole:

Teoricamente questa ape serve solamente per aprire la chiave
specificata restituendo vero se esiste o falso se non c'è, infatti se
scrivi questo codice
Global Const HKEY_LOCAL_MACHINE = &H80000002
ReturnCode = CBool(RegOpenKey(HKEY_LOCAL_MACHINE, _ 
lpSubKey, phkResult))
ti darà risultato 1 cioè vero perchè esiste tale chiave e CBool
converte 1010 in 1(  almeno è quello che ho capito guardando il setup
kit di vb5.)
Anch'io dovevo in qualche modo leggere una chiave nel registro ma non
ci sono ancora riuscito, credo siano le spiegazioni esaustive della
guida in linea relative alle api( non c'è niente!!!!).
Spero che ci sia qualche altra anima buona che abbia la cortesia di
risponderti in modo più chiaro del mio così risolverò anche il mio
problema.
Ciao a tutti,
Fabrizio
-----------------------------------------------
Se mi vuoi mandare una e-mail credo ti convenga 
togliere "ANTIROMPI" dal mio indirizzo!!
-----------------------------------------------
       Sono reperibile nei seguenti NG:
it.comp.lang.visual-basic
          it.comp.sicurezza.pgp
                        it.fan.simpson
-----------------------------------------------

>Walter
Per rilevare se è attiva una connessione io uso questo codice (testato sotto
Vb5+Sp3 ma dovrebbe funzionare anche con Vb4):
Nella sezione dichiarazioni di un form:
Private Const ERROR_SUCCESS = 0&
Private Const APINULL = 0&
Private ReturnCode As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal _
hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias _
"RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As _
String, phkResult As Long) As Long
Private 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
Inserisci poi la seguente funzione:
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
Dim HKEY_LOCAL_MACHINE 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
Infine, per provare il tutto, metti un pulsante di comando sul form ed il
seguente codice nell'evento Click del pulsante:
Private Sub Command1_Click()
If ActiveConnection  Then
    MsgBox "Connessione attiva.", vbInformation
Else
    MsgBox "Connessione non attivata.", vbInformation
End If
End Sub
Spero che sia questo quello che cercavi e che ti possa tornare utile.
Ciao.