Con VB.Net 2010 y utilizando System.Net.NetworkInformation obtengo el valor de datos de subida y bajada de mi conexión.
El caso es que me funciona en Vista y Windows7 pero no en XP.
Esta es la función que he utilizado:
Código
Public Class InformationNetWork Dim Estado As String Dim DatosRecibidos As String Dim DatosEnviados As String Public Function EnumerateNetwok() Dim properties As System.Net.NetworkInformation.IPGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties() Dim ipstat As System.Net.NetworkInformation.IPGlobalStatistics = properties.GetIPv4GlobalStatistics() '//Estado de red Dim ipv4Stats As System.Net.NetworkInformation.IPv4InterfaceStatistics ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(0).GetIPv4Statistics DatosRecibidos = ipv4Stats.BytesReceived.ToString DatosEnviados = ipv4Stats.BytesSent.ToString '//Estado Conexión Dim ipv4Time As System.Net.NetworkInformation.IPGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties() Try Dim n = ipv4Time.GetActiveTcpConnections().Cast(Of System.Net.NetworkInformation.TcpConnectionInformation).First(Function(el) el.State) Estado = n.State Catch ex As Exception Estado = "Desconectado" End Try Return 0 End Function Public Property DatesRecibidos As String Get Return DatosRecibidos End Get Set(ByVal value As String) End Set End Property Public Property DatesEnviados As String Get Return DatosEnviados End Get Set(ByVal value As String) End Set End Property End Class
Y para llamarlo hago lo siguiente:
Código
Public Class Form1 Dim Subida As Decimal Dim Bajada As Decimal Dim OldSubida As Decimal Dim OldBajada As Decimal Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim InfoNet As New InformationNetWork InfoNet.EnumerateNetwok() Label4.Text = FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2) & " MB" Label5.Text = FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2) & " MB" If OldSubida <> Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) Then Label6.Text = Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida & " MB" Label7.Text = Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada & " MB" Label9.Text = (Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida) + _ (Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada) & " MB" Subida = Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida Bajada = Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada End If End Sub End Class