Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Sono connesso?

Come faccio a sapere se sono connesso da VB?
Ho trovato come controllare se ho una connessione attiva, ma se sono
connesso tramite LAN
la funzione che hu trovato:(vedi sotto) restituisce connesso = false
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA"
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public 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
Dim handle As Long, lpData As Long
Dim Connesso As Boolean
Dim lngRet As Long
Connesso = False
lngRet = RegOpenKey(HKEY_LOCAL_MACHINE,
"System\CurrentControlSet\Services\RemoteAccess", handle)
If ret = ERROR_SUCCESS Then
    lngRet = RegQueryValueEx(handle, "Remote Connection", vbNull, vbNull,
lpData, Len(lpData))
    If ret = ERROR_SUCCESS Then
        If lpData = 0 Then
                Connesso = False
            Else
                Connesso = True
            End If
    End If
End If
RegCloseKey (handle)

 connesso tramite LAN...
Vuoi sapere se sei in rete o meno ?
Io la soluzione che ho trovato è quella di pingare ad intervalli regolari (o
quando serve sapere se sei online) il server.
Non sarà un metodo correttissimo.... ma per superare l'ostacolo ha
funzionato :-))
--
                  \/
                 -   -
                 (.) (.)
----o0O0o--(_)--o0O0o----
<<Oh Grande Spirito,
Concedimi la serenità
Di accettare le cose
Che non posso cambiare,
Il coraggio di cambiare le cose
Che posso cambiare,
E la Saggezza di capirne la differenza.>>
               (Preghiera Cherokee)
Ciao
Franco

 connesso tramite LAN
Il tuo sembra un problema banale e invece è un casino. Il problema è che per
sapere se hai una connessione attiva sulla rete, l'unico sistema è pingare
un qualche sito sicuro (ad esempio internic, o 
register.it
), ma se l'utente
si connette solo in dial-up, facendo così si apre il maledetto dialogo di
connessione ad internet.
L'unico sistema che conosco si basa su di un algoritmo induttivo, che è
soggetto a riportare la mancata presenza di connessione in almeno un caso.
Prima di tutto devi controllare se esiste almeno una connessione DUN. In
questo caso, parti dal presupposto che l'utente non può connettersi via
rete, ma solo in Dial-Up. Se invece non esiste nessuna connessione DUN, puoi
pensare che l'accesso avvenga solo tramite la rete.
Nel primo caso, usa la tua routine per vedere se l'utente è già on-line. Se
risulta che non lo è, potrebbe essere connesso via rete, ma devi presupporre
che non lo sia se vuoi evitare lo spiacevole caso in cui si apre il dialogo
di connessione a internet.
Nel secondo caso, pinga un sito sicuramente Up, e vai tranquillo. Non
essendoci connessioni DUN disponibili, non potrà aprirsi il dialogo, e se
vai in timeout, puoi ragionevolmente dire di non essere connesso.
Ultimo appunto, leggere il registry non è il modo migliore per sapere se sei
on-line con una connessione in dial-up. Io consiglio di usare questa
rountine invece:
Option Explicit
Declare Function RasEnumConnections Lib "RasApi32.dll" Alias _
        "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, _
        lpcConnections As Long) As Long
Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias _
        "RasGetConnectStatusA" (ByVal hRasCon As Long, _
        lpStatus As Any) As Long
Public Const RAS95_MaxEntryName = 256
Public Const RAS95_MaxDeviceType = 16
Public Const RAS95_MaxDeviceName = 32
Public Type RASCONN95
   dwSize As Long
   hRasCon As Long
   szEntryName(RAS95_MaxEntryName) As Byte
   szDeviceType(RAS95_MaxDeviceType) As Byte
   szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Public Type RASCONNSTATUS95
   dwSize As Long
   RasConnState As Long
   dwError As Long
   szDeviceType(RAS95_MaxDeviceType) As Byte
   szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Public Function IsConnected() As Boolean
   Dim TRasCon(255) As RASCONN95
   Dim lg As Long
   Dim lpcon As Long
   Dim RetCDec As Long
   Dim Tstatus As RASCONNSTATUS95
   TRasCon(0).dwSize = 412
   lg = 256 * TRasCon(0).dwSize
   RetCDec = RasEnumConnections(TRasCon(0), lg, lpcon)
   Tstatus.dwSize = 160
   RetCDec = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
   If Tstatus.RasConnState = &H2000 Then
      IsConnected = True
   Else
      IsConnected = False
   End If
End Function
Ciao
*Roby*

> Il tuo sembra un problema banale e invece è un casino.
Mi rispondo da solo. Cercando un po', ho trovato un sistema che si basa
WinInet.DLL:
http://www.vbworld.com/internet/tip467.html
Unico appunto da fare è questa dll è disponibile solo su sistemi con
installato IE3.0 o superiori, quindi non bisogna darne per scontata la
presenza.
Ciao
*Roby*


ti faccio notare che oggi prima di questo post non avevi _mai_ inserito dei
link nei tuoi post.
Perdi colpi oppure è andata giù la connessione ad Internet? :)
ciao
Alfonso

 Perdi colpi oppure è andata giù la connessione ad Internet? :)
No, internet va bene ed è bella veloce. L'ho appena controllato qui:
http://tech.msn.com/internet/speedtest.asp
Ciao :-P
*Roby*

 
http://tech.msn.com/internet/speedtest.asp
che funziona cosi':
se ci metti un casino ad arrivare al sito, internet e' lenta.
j.if

 prima di questo post non avevi _mai_ inserito dei link
Scusa se ti rispondo due volte (in pieno OT per giunta), ma ho appena
trovato un sito imperdibile, per gli appassionati della caccia al link:
http://www.googlewhack.com/
Si tratta di un gioco in cui bisogna trovare (usando il minor numero di
parole) un unico risultato nella ricerca di Google. Semplicemente geniale!
;-)
Ciao
*Roby*
P.S.
In italiano è troppo semplice. Dopo poche prove ho trovato un risultato
singolo con "barrito fumoso"
?:-)

 singolo con "barrito fumoso"
Giuro, dopo questo messaggio la pianto!
In realtà quel risultato non è valido perchè deve essere una frase esatta,
non 2 parole sparse nel testo. Comunque è sempre troppo facile in italiano,
visto che ho trovato un altro risultato singolo quasi subito, malgrado la
regola restrittiva, con "Derviscio Magrebino".
Ciao
*Roby*

 
http://tech.msn.com/internet/speedtest.asp
cosě va meglio:)
Alfonso.linkdipendente

 ha scritto nel messaggio
news:a409vh$1bpqcf$1...@ID-94194.news.dfncis.de...

Vado subito a vedere:)
Alfonso.oranonmitremanopiùlemani:)

 ha scritto nel messaggio
news:a409vh$1bpqcf$1...@ID-94194.news.dfncis.de...

Veramente è il contrario. _Non_ deve essere una frase esatta, altrimenti è
troppo facile...
io ho trovato:
beduino fitofilia
Bye
Alfonso

 _Non_ deve essere una frase esatta,
Orpo hai ragione!
Allora resta valida la prima. Comunque sono sempre dell'idea che in italiano
è troppo facile.
Ciao
*Roby*


Beduino fitofilia porta ad un divertentissimo pezzo di Paolo Rossi:
http://www.granbaol.org/dahome/num14/fiumi_diluiti.htm
sto ancora ridendo...
ciao
Alfonso