Newsgroup: it.comp.lang.visual-basic
Titolo: [vb6] verificare la connessione ad internet

Ciao a tutti
Ho bisogno, da codice, di verificare se e' attiva, sul pc
dell'utente, una connessione ad internet, via lan o modem.
1) ho provato tramite accesso al registry, su
HLM\System\CurrentControlSet\Services\RemoteAccess
ma ottengo risultato positivo se sono connesso tramite
modem. Non posso rilevare connessione via LAN
2) provato con la funzione InternetGetConnectedStateEx
di wininet.dll - se sono in rete locale mi da sempre ok anche
se non sono connesso ad internet
3) provato a fare un ping ad un indirizzo ip sempre
sicuramente attivo. Il sistema mi sembra troppo empirico e
poi se non c'e' la connessione mi richiede troppo tempo
prima che vada in timeout.
qualcuno mi sa suggerire un metodo piu' valido?
grazie
Beppe

 dell'utente, una connessione ad internet, via lan o modem.
sip c'e' ma l'ho sull'altro PC ... cmq se cerchi su guuugle
' qui ho questo VBS
Set fs = CreateObject("Scripting.FileSystemObject")
Set oShell = WScript.CreateObject("WScript.Shell")
bKey =  oShell.RegRead("HKLM\System\CurrentControlSet\"& _
                            "Services\RemoteAccess\Remote Connection")
wscript.echo "TypeName: " & typename(bKey(0))
wscript.echo join(bKey, vbCr)
If bKey(0) ="0" then
 Msgbox"NON sei connesso"
else
 Msgbox" sei connesso"
end if
'Copia incolla su notepad e salva con estensione .vbs
'tutti i file (*.*)  poi ci clicchi sopra. (per esempio Test.vbs)
'se ti da' errore disattiva l'antivirus
-- 
Fosco

 sip c'e' ma l'ho sull'altro PC ... cmq se cerchi su guuugle
VB :
'Form
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
Private Sub Command1_Click()
If ActiveConnection = True Then
     MsgBox ("Sei connesso a Internet")
Else
     MsgBox ("Non sei connesso")
End If
End Sub
Private Sub Form_Load()
End Sub
' Modulo bas
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
-- 
Fosco

ehm... grazie, ma come dicevo nel mio post iniziale
questo metodo mi dice se sono connesso o no tramite
modem... se non ho modem  e sono connesso ad  internet
tramite lan mi da risultato negativo.
mah...
beppe

Batrax:

Peccato ho un exe qui che fa proprio quello che chiedi
Ma purtroppo il sorgente du un'altro pc
http://www.wikifortio.com/448344/lan.png
prova a guardare il layout e fai una ricerca su gooogle
a memoria io lo ho lasciato cosi dall'originale
-- 
Fosco

 ha scritto nel messaggio
news:4745d2dd$0$10617$4faf...@reader2.news.tin.it...


 ha
scritto:

Prova con l' API InternetGetConnectedState
Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As
Long, ByVal dwReserved As Long) As Long
http://msdn.microsoft.com/library/en-us/wininet/wininet/internetgetconnectedstate.asp
--
ciao
  Stefano



non funziona
qui in ufficio, connessione adsl, il tuo esempio mi dice "Non sei
connesso"

...scusate... mi state ripetendo a turno uno dei tre metodi
che ho già provato io...che ho escluso nel mio post
iniziale e che ho già provato in lungo e in largo...
allora: NON funzionano.
il registry non va. Il risultato e' del tipo: NON sei connesso
via modem, FORSE sei connesso via LAN
se uso  InternetGetConnectedStateEx di Wininet e sono
in rete LAN mi dice: sei connesso a Internet (anche se
il router è down)
fare un ping a 
google.com
 e' una schifezza. Poi se non
sono connesso, ci mette un minuto almeno prima di
restituirmi il risultato (richiesta in timeout).
*** eppure son convinto che si possa... ho un software
sul mio pc che, istantaneamente, appena il mio pc entra
in connessione internet, mi tira fuori un box con la richiesta
di registrazione... immediato!!
grazie ciao

 ha scritto nel messaggio 
news:4746a287$0$17954$4faf...@reader1.news.tin.it...

Prova questo:
'-->
'--> inserire il riferimento a: Microsoft WinHTTP Services
'-->
Dim HttpReq As New WinHttpRequest
Dim strUrl As String, xIndice As Integer
strUrl = "
http://www.google.it
"
On Error Resume Next
HttpReq.Open "GET", strUrl, False
If Err.Number <> 0 Then
    Debug.Print strUrl & ", non va da nessuna parte!"
Else
    Debug.Print strUrl & ", Link Ok!"
End If
Err.Clear
HttpReq.abort
Set HttpReq = Nothing
'----
Ciao.
-- 
Sergio MAZZA 


NON funge. Ho provato sul mio portatile dopo aver disattivato
la chiavetta per la connessione wireless. Non vede piu' la rete di
sicuro, manco quella locale. Eppure continua a dire Link OK anche
se cambio url (per evitare eventuali cache)
grazie =... ciao

 grazie =... ciao
Mi è saltata una riga:
...
On Error Resume Next
HttpReq.Open "GET", strUrl, False
HttpReq.Send '<-- mancava
If Err.Number <> 0 Then
...
Ciao.
-- 
Sergio MAZZA