PDA

View Full Version : Controllo connessioni con VB


cla.longa
01-06-2004, 11:53
Ciao vorrei sapere quali siano le istruzioni da inserire in un codice di visual basic per sapere la quantità di dati in ricezione sulla mia connessione Internet.
E se eventualmente esistono delle istruzioni che mi permettano di avere uno script contenente la data e l'ora sempre aggiornate al momento di una connessione internet.

matpez
01-06-2004, 12:06
Questo esempio funziona solo con un OS a base NT (win2000, XP, etc etc)

Ecco a te :)

Private Declare Function RasEnumConnections Lib "rasapi32" Alias "RasEnumConnectionsA" (ByVal lprasconn As Long, ByVal lpcb As Long, ByVal lpcConnections As Long) As Long
Private Declare Function RasGetConnectionStatistics Lib "rasapi32" (ByVal hRasConn As Long, ByVal lpStatistics As Long) As Long
Private Type RASCONN
dwSize As Long
hRasConn As Long
szEntryName(0 To 256) As Byte
szDeviceType(0 To 16) As Byte
szDeviceName(0 To 128) As Byte
pad As Byte
End Type
Private Type RAS_STATS
dwSize As Long
dwBytesXmited As Long
dwBytesRcved As Long
dwFramesXmited As Long
dwFramesRcved As Long
dwCrcErr As Long
dwTimeoutErr As Long
dwAlignmentErr As Long
dwHardwareOverrunErr As Long
dwFramingErr As Long
dwBufferOverrunErr As Long
dwCompressionRatioIn As Long
dwCompressionRatioOut As Long
dwBps As Long
dwConnectDuration As Long
End Type

Private Sub Form_Load()
Dim conn As RASCONN
Dim stat As RAS_STATS
Dim y As Long, z As Long

conn.dwSize = Len(conn)
y = conn.dwSize


If RasEnumConnections(VarPtr(conn), VarPtr(y), VarPtr(z)) = 0 Then
stat.dwSize = Len(stat)
If RasGetConnectionStatistics(conn.hRasConn, VarPtr(stat)) = 0 Then
Debug.Print stat.dwAlignmentErr
Debug.Print stat.dwBps
Debug.Print stat.dwBufferOverrunErr
Debug.Print stat.dwBytesRcved
Debug.Print stat.dwBytesXmited
Debug.Print stat.dwCompressionRatioIn
Debug.Print stat.dwCompressionRatioOut
Debug.Print stat.dwConnectDuration
Debug.Print stat.dwCrcErr
Debug.Print stat.dwFramesRcved
Debug.Print stat.dwFramesXmited
Debug.Print stat.dwFramingErr
Debug.Print stat.dwTimeoutErr
End If
End If

End Sub

Per trovare la data e l'ora devi estrapolarla...cioè nel campo stat.dwConnectDuration, hai il valore in secondi se non erro del tempo della connessione, basta che fai un rapido calcolo...

Il problema è lo script, dovresti crearti tu un programma che rimanga in background ed ogni tanto faccio appunto il test della connessione...

Una funzione che ti può tornare utile è questa:

Public Function IsConnectOnline() As Boolean

IsConnectOnline = InternetGetConnectedState(0&, 0&)

End Function

cionci
01-06-2004, 19:58
Non è più facile connettercisi a quella porta ?

matpez
01-06-2004, 21:21
Originariamente inviato da cionci
Non è più facile connettercisi a quella porta ?

:confused:

cionci
02-06-2004, 00:24
Mi sa che ho sbagliato discussione !!! :D

Comunque l'unico modo in cui fare una cosa del genere è come ha detto matpez...