Newsgroup: it.comp.lang.visual-basic
Titolo: Conn aperta

  Sto provando questa funzione di Moreno Sirri, per sapere se c'è una
connessione a internet aperta, ma putroppo ottengo invariabilmente False,
sia con connessione aperta che chiusa.
Dove è che sto sbagliando?
grazie, ciao
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
--
Greg

 Dove è che sto sbagliando?
Qualcuno sarebbe cosi gentile da copiare quel codice, provarlo e dirmi che
risultato ottiene?
Grazie
Mi viene il dubbio, essendo il codice del 1999, e considerando che oggi
abbiamo quasi tutte connessioni adsl, che la funzione vada a leggere la
chiave sbagliata nel registry.Ma forse ho detto solo una sciocchezza :(
--
Greg

 
Non sarą molto significativo, forse, ma in lan aziendale restituisce 
False...perņ, appunto, non credo sia molto significativo come risultato!
-- 
Due stringhe entrano in un bar. La prima dice al barista: "Barista, dammi 
una birra.u.5n$x5t?*&4ru!2[sACC~ErJ". E la seconda: "Perdoni il mio amico, 
non ha il terminatore NULL"

 risultato!
No no, lo è eccome! Ho aggiunto un altro tassello, ti ringrazio.
Adesso spero che qualche altra persona gentile faccia un test con
connessione adsl
ciao
--
Greg

 wrote in 
news:Beire.15018$
75.10...@news4.tin.it
:

Figurati! ;-)


grazie, ciao
[CUT]
Credo che in questo modo tu vada a testare unicamente la connessione
via modem (RemoteAccess = RAS/DUN)
Ci sono altre vie:
1) Ping
Esempio qui: 
http://vbnet.mvps.org/code/internet/ping.htm
(Fallisce con ICMP Response disabilitato sul router.)
2) API Inet
Esempio qui: 
http://vb.mvps.org/samples/project.asp?id=NetConnect
(Fallisce se hai il browser offline.)
3) Winsock (API o Controllo)
Ciao