Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lire la carte réseau, suite ?

13 réponses
Avatar
LE TROLL
Bonjour,

Débutant vbNet, je cherche des informations réseau, sur lesquelles je ne
connais absolument rien.
A force de demander (sur presqu'un mois quand même), j'ai pu en obtenir
quelques-unes (qui peuvent sans doute être améliorées), soit :

- la connexion
- le nom du PC
- l'adresse IP principale
- le trafic
- la vitesse.

Il me manque 3 informations qui sont :
- la durée (peut se calculer à la rigueur)
- SSID wifi (nom utilisateur wifi)
- qualité de réception (0 à 5)

En fin de compte, tout ça se trouve en cliquant sur l'icône réseau du
systray (ou panneau de configuration), puis centre de réseaux et partages,
puis "voir le statut".

A ce lien, on trouvera un exemple de code vbNet qui permettrait de compléter
ce qu'il me manque, si j'y comprenais quelque chose, c'est ici :

http://mesromans.free.fr/wifivbnet.zip

Notons dans un autre registre, qu'il y a aussi l'api wLanApi.dll qui fait ce
que je cherche, mais c'est encore plus compliqué !

Et voici le code que j'ai actuellement en vbNet, des fonctions sus-citées
que je possède désormais. Ce code comme je le disais est sans doute aussi à
améliorer, mais je n'en ai pas le savoir. Par exemple, parfois je fais une
boucle each, et je récupère seulement l'information du premier passage, ce
qui me convient, mais pourquoi c'est la première information qui est la
bonne (IP par exemple), je n'en sais rien, et je ne sais pas davantage non
plus si ceci va fonctionner dans tous les cas, je constate simplement qu'à
défaut de connaître la chose, et bien ça tourne...
Voici mon code vbNet (compilation d'informations fournies un peu partout :

---



' cle3Gusb form1
Option Explicit On
Imports System.Net.NetworkInformation
Imports System.Net
Imports System.Math
' IL ME MANQUE : durée, SSID wifi, qualité de réception
Public Class Form1
Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim Statistics As IPv4InterfaceStatistics
Dim varHostEntry As IPHostEntry
Dim t1
Dim p1 As Double
Dim p2 As Double
'
TextBox1.Text = ""
t1 = ""
'
' connexion
If My.Computer.Network.IsAvailable Then TextBox1.Text = TextBox1.Text &
"Etat : Connecté" & vbCrLf
If Not My.Computer.Network.IsAvailable Then TextBox1.Text =
TextBox1.Text & "Etat : Déconnecté" & vbCrLf
'
TextBox1.Text = TextBox1.Text & "Computer : " & Environment.UserName &
vbCrLf
'
' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf
'
' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1 +
p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next
'
' vitesse
Dim MonInterface As System.Net.NetworkInformation.NetworkInterface
For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString \ 1048576 & " Mo/s" & vbCrLf
Exit For
Next
End Sub ' form1
End Class


' MANQUE

'- la durée (peut se calculer à la rigueur)
'- SSID wifi (nom utilisateur wifi)
'- qualité de réception (0 à 5)
-----

En vous remerciant, très cordialement.

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.

10 réponses

1 2
Avatar
"LE TROLL" <le a écrit dans le message de news:

Bonjour,

Par exemple, parfois je fais une boucle each, et je récupère seulement
l'information du premier passage, ce qui me convient, mais pourquoi c'est
la première information qui est la bonne (IP par exemple), je n'en sais
rien, et je ne sais pas davantage non plus si ceci va fonctionner dans
tous les cas, je constate simplement qu'à défaut de connaître la chose, et
bien ça tourne...



Bonjour Le Troll,

Je pense par contre, que ce n'est pas forcément la 1ère IP qui sera la
bonne.
Sans avoir vérifié, la boucle Each va te lister les différentes cartes,
peut-être même dans le même ordre que lorsque l'on tape la commande IPCONFIG
sous l'invite de commande.
Soit la carte a obtenu 1 IP, soit non.
Soit la carte connait la passerelle qui te permet d'accéder à internet, soit
non.

Si ca marche quasiment tout le temps avec la 1ère occurence de la boucle
Each, pour moi, je pense que ce ne sera pas forcément obligatoire.
Je vais prendre l'exemple d'un PC portable qui a 1 carte réseau WiFi, et 1
carte réseau filaire.
Teste en connectant ce PC portable au réseau une fois via le WiFi, et une
nouvelle fois via le RJ45.
Sans avoir vérifié, je suis persuadé que l'IP ne sera pas la 1ère occurence
de la boucle Each dans ces 2 cas.

Si tel est le cas, je pense qu'il faut vérifier que les données attendues
soient de format correct avant de sortir de la boucle.

Bonne journée,
Stéphane.
Avatar
Jacquouille14
LE TROLL a écrit :

' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf



Dans cette boucle chaque élément trouvé est "rangé" dans t1,
donc tu ne récupères que le dernier élément trouvé. Il
te faut ranger chaque élément trouvé dans un tableau ou
l'afficher dans une grille ou par un msgbox selon ce que tu
veux en restant à l'intérieur de la boucle.

' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1 +
p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next



Pas de problème ici, tu récupère bien un élément que tu
recherches et sélectionne par le if. Toutefois si le if
peut retrouver plusieurs éléments correspondants dans la
boucle tu ne récupéreras que le dernier comme ci-dessus.
Donc dans le if il te faut récupérer tes éléments et les
conserver pour pouvoir tous les observer et utiliser.

For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next



Exit for te fait sortir de la boucle dès le premier
élément trouvé. Soit la boucle est inutile parce que tu n'as
besoin que d'un seul élément, soit le exit for est à enlever
et tu récupères tous les éléments.

Bonjour,
J'ai isolé les boucles pour répondre.

Noter que dans les boucles For each la recherche des éléments
se fait dans un ordre indifférent et pas toujours le même d'où
la nécessité d'analyser le résultat à chaque tour de boucle.


--

Jacques dit Jacquouille
Avatar
LE TROLL
Bonjour Stéphane,

Ben oui... en fait, moi, ce que je cherche c'est l'adresse IP du PC qui
se connecte en mode wifi (donc pas le filaire), toutefois on fait comment
pour savoir si c'est la bonne IP, ah ?

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


<Stéphane> a écrit dans le message de
news:uueMjo%
"LE TROLL" <le a écrit dans le message de news:

Bonjour,

Par exemple, parfois je fais une boucle each, et je récupère seulement
l'information du premier passage, ce qui me convient, mais pourquoi c'est
la première information qui est la bonne (IP par exemple), je n'en sais
rien, et je ne sais pas davantage non plus si ceci va fonctionner dans
tous les cas, je constate simplement qu'à défaut de connaître la chose,
et bien ça tourne...



Bonjour Le Troll,

Je pense par contre, que ce n'est pas forcément la 1ère IP qui sera la
bonne.
Sans avoir vérifié, la boucle Each va te lister les différentes cartes,
peut-être même dans le même ordre que lorsque l'on tape la commande
IPCONFIG sous l'invite de commande.
Soit la carte a obtenu 1 IP, soit non.
Soit la carte connait la passerelle qui te permet d'accéder à internet,
soit non.

Si ca marche quasiment tout le temps avec la 1ère occurence de la boucle
Each, pour moi, je pense que ce ne sera pas forcément obligatoire.
Je vais prendre l'exemple d'un PC portable qui a 1 carte réseau WiFi, et 1
carte réseau filaire.
Teste en connectant ce PC portable au réseau une fois via le WiFi, et une
nouvelle fois via le RJ45.
Sans avoir vérifié, je suis persuadé que l'IP ne sera pas la 1ère
occurence de la boucle Each dans ces 2 cas.

Si tel est le cas, je pense qu'il faut vérifier que les données attendues
soient de format correct avant de sortir de la boucle.

Bonne journée,
Stéphane.




Avatar
LE TROLL
Bonjour Jacquoille n° 14,

Oui, en effet, c'est la dernière info qu'est la bonne et nom la
première, si je veux la première faut mettre un exit for après la primo
lecture.
Non, je ne savais pas que Each sortait dans n'importe quel ordre, j'en
tiendrai compte dorénavant, toutefois tu me dis de vérifier ensuite, oui,
mais de vérifier par rapport à quoi et comment, ah ah !
Mais bon, au point où j'en suis... bof... comment vérifier si c'est l'IP
wifi du PC, ah ?
Je sors des infos je ne sais même pas trop comment, maintenant on me dit
qu'elles peuvent être fausses, ouais, et de toute façon il m'en manque,
alors, bon...
Faut que je trouve quelqu'un qui sait le faire, sinon je ne m'en sortirai
pas, ça n'a pas l'air monstrueux en quantité, avec trente lignes j'ai déjà
cinq infos, certes à revoir, et il m'en manque trois (deux si on calcule la
durée), y a pas à chercher, faut une personne qui sache le faire...

Ben, merci néanmoins, cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Jacquouille14" a écrit dans le message de
news:4b1e1f74$0$31972$
LE TROLL a écrit :

' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf



Dans cette boucle chaque élément trouvé est "rangé" dans t1,
donc tu ne récupères que le dernier élément trouvé. Il
te faut ranger chaque élément trouvé dans un tableau ou
l'afficher dans une grille ou par un msgbox selon ce que tu
veux en restant à l'intérieur de la boucle.

' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1 +
p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next



Pas de problème ici, tu récupère bien un élément que tu
recherches et sélectionne par le if. Toutefois si le if
peut retrouver plusieurs éléments correspondants dans la
boucle tu ne récupéreras que le dernier comme ci-dessus.
Donc dans le if il te faut récupérer tes éléments et les
conserver pour pouvoir tous les observer et utiliser.

For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next



Exit for te fait sortir de la boucle dès le premier
élément trouvé. Soit la boucle est inutile parce que tu n'as
besoin que d'un seul élément, soit le exit for est à enlever
et tu récupères tous les éléments.

Bonjour,
J'ai isolé les boucles pour répondre.

Noter que dans les boucles For each la recherche des éléments
se fait dans un ordre indifférent et pas toujours le même d'où
la nécessité d'analyser le résultat à chaque tour de boucle.


--

Jacques dit Jacquouille


Avatar
Jacquouille14
LE TROLL a écrit :
Bonjour Jacquoille n° 14,

Oui, en effet, c'est la dernière info qu'est la bonne et nom la
première, si je veux la première faut mettre un exit for après la primo
lecture.
Non, je ne savais pas que Each sortait dans n'importe quel ordre, j'en
tiendrai compte dorénavant, toutefois tu me dis de vérifier ensuite,
oui, mais de vérifier par rapport à quoi et comment, ah ah !
Mais bon, au point où j'en suis... bof... comment vérifier si c'est l'IP
wifi du PC, ah ?
Je sors des infos je ne sais même pas trop comment, maintenant on me dit
qu'elles peuvent être fausses, ouais, et de toute façon il m'en manque,
alors, bon...
Faut que je trouve quelqu'un qui sait le faire, sinon je ne m'en
sortirai pas, ça n'a pas l'air monstrueux en quantité, avec trente
lignes j'ai déjà cinq infos, certes à revoir, et il m'en manque trois
(deux si on calcule la durée), y a pas à chercher, faut une personne qui
sache le faire...

Ben, merci néanmoins, cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Jacquouille14" a écrit dans le message de
news:4b1e1f74$0$31972$
LE TROLL a écrit :

' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf



Dans cette boucle chaque élément trouvé est "rangé" dans t1,
donc tu ne récupères que le dernier élément trouvé. Il
te faut ranger chaque élément trouvé dans un tableau ou
l'afficher dans une grille ou par un msgbox selon ce que tu
veux en restant à l'intérieur de la boucle.

' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " &
Format(Round(p1 + p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next



Pas de problème ici, tu récupère bien un élément que tu
recherches et sélectionne par le if. Toutefois si le if
peut retrouver plusieurs éléments correspondants dans la
boucle tu ne récupéreras que le dernier comme ci-dessus.
Donc dans le if il te faut récupérer tes éléments et les
conserver pour pouvoir tous les observer et utiliser.

For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next



Exit for te fait sortir de la boucle dès le premier
élément trouvé. Soit la boucle est inutile parce que tu n'as
besoin que d'un seul élément, soit le exit for est à enlever
et tu récupères tous les éléments.

Bonjour,
J'ai isolé les boucles pour répondre.

Noter que dans les boucles For each la recherche des éléments
se fait dans un ordre indifférent et pas toujours le même d'où
la nécessité d'analyser le résultat à chaque tour de boucle.


--

Jacques dit Jacquouille





Tes infos ne sont pas fausses, elles sont ce que tu as demandé
mais il en manque.
Quand j'écris vérifier je veux dire que tu regardes le résultat et
en tire tes conclusions.
Pour ne perdre aucune info venant de chaque boucle each tu fais
ce code en changeant le nom du tableau à chaque boucle:
dim mesresultats(20) as string 'création de tableau
dim i%=0
for each ...'tous les résultats vont dans le tableau
i%=i% + 1
mesresultats(i%) = MonInterface.Speed.ToString 1048576 & " Mo/s"
& vbCrLf
next
Pour voir les résultats:
for i% = 1 to 20
msgbox(mesresultats(i%),48,"résultat numéro " & cstr(i%))
next

Tu peux aussi utiliser des tableaux à dimensions variables.
J'ai choisi 20 résultats au pif, tu mets ce que tu veux, c'est selon
ce que tu crois avoir comme éléments dans tes boucles pour ne rien
rater.
Ton projet me semble intéressant, pour contrôler le trafic internet ?
--

Jacques dit Jacquouille
Avatar
LE TROLL
Pour contrôler une 3g, afin de ne pas se faire avoir par les quotas,
peut ensuite être lié avec fichiers comptabilité, paramètres d'alertes,
graphique, etc...

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Jacquouille14" a écrit dans le message de
news:4b1e6de3$0$29965$
LE TROLL a écrit :
Bonjour Jacquoille n° 14,

Oui, en effet, c'est la dernière info qu'est la bonne et nom la
première, si je veux la première faut mettre un exit for après la primo
lecture.
Non, je ne savais pas que Each sortait dans n'importe quel ordre, j'en
tiendrai compte dorénavant, toutefois tu me dis de vérifier ensuite, oui,
mais de vérifier par rapport à quoi et comment, ah ah !
Mais bon, au point où j'en suis... bof... comment vérifier si c'est l'IP
wifi du PC, ah ?
Je sors des infos je ne sais même pas trop comment, maintenant on me dit
qu'elles peuvent être fausses, ouais, et de toute façon il m'en manque,
alors, bon...
Faut que je trouve quelqu'un qui sait le faire, sinon je ne m'en sortirai
pas, ça n'a pas l'air monstrueux en quantité, avec trente lignes j'ai
déjà cinq infos, certes à revoir, et il m'en manque trois (deux si on
calcule la durée), y a pas à chercher, faut une personne qui sache le
faire...

Ben, merci néanmoins, cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Jacquouille14" a écrit dans le message de
news:4b1e1f74$0$31972$
LE TROLL a écrit :

' IP
varHostEntry =
Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf



Dans cette boucle chaque élément trouvé est "rangé" dans t1,
donc tu ne récupères que le dernier élément trouvé. Il
te faut ranger chaque élément trouvé dans un tableau ou
l'afficher dans une grille ou par un msgbox selon ce que tu
veux en restant à l'intérieur de la boucle.

' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1
+ p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next



Pas de problème ici, tu récupère bien un élément que tu
recherches et sélectionne par le if. Toutefois si le if
peut retrouver plusieurs éléments correspondants dans la
boucle tu ne récupéreras que le dernier comme ci-dessus.
Donc dans le if il te faut récupérer tes éléments et les
conserver pour pouvoir tous les observer et utiliser.

For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next



Exit for te fait sortir de la boucle dès le premier
élément trouvé. Soit la boucle est inutile parce que tu n'as
besoin que d'un seul élément, soit le exit for est à enlever
et tu récupères tous les éléments.

Bonjour,
J'ai isolé les boucles pour répondre.

Noter que dans les boucles For each la recherche des éléments
se fait dans un ordre indifférent et pas toujours le même d'où
la nécessité d'analyser le résultat à chaque tour de boucle.


--

Jacques dit Jacquouille





Tes infos ne sont pas fausses, elles sont ce que tu as demandé
mais il en manque.
Quand j'écris vérifier je veux dire que tu regardes le résultat et
en tire tes conclusions.
Pour ne perdre aucune info venant de chaque boucle each tu fais
ce code en changeant le nom du tableau à chaque boucle:
dim mesresultats(20) as string 'création de tableau
dim i%=0
for each ...'tous les résultats vont dans le tableau
i%=i% + 1
mesresultats(i%) = MonInterface.Speed.ToString 1048576 & " Mo/s" &
vbCrLf
next
Pour voir les résultats:
for i% = 1 to 20
msgbox(mesresultats(i%),48,"résultat numéro " & cstr(i%))
next

Tu peux aussi utiliser des tableaux à dimensions variables.
J'ai choisi 20 résultats au pif, tu mets ce que tu veux, c'est selon
ce que tu crois avoir comme éléments dans tes boucles pour ne rien
rater.
Ton projet me semble intéressant, pour contrôler le trafic internet ?
--

Jacques dit Jacquouille


Avatar
Patrice
Bonjour,

Avec la libraire que tu indiques cela peut donner par exemple en mettant
dans le Form_Load :

Dim client As New WlanClient
' Pour toutes les cartes Wifi...
For Each Int As WlanClient.WlanInterface In client.Interfaces
' ...connectée
If Int.InterfaceState = Wlan.WlanInterfaceState.Connected Then
Dim strSSID As String = ""
Dim SSID As Wlan.Dot11Ssid =
Int.CurrentConnection.wlanAssociationAttributes.dot11Ssid
For i As Integer = 0 To SSID.SSIDLength - 1
strSSID &= Chr(SSID.SSID(i))
Next
Debug.WriteLine("===========")
Debug.WriteLine(strSSID)
Debug.WriteLine(Int.CurrentConnection.wlanAssociationAttributes.wlanSignalQuality)
End If
Next

ce qui donne le SSID et la qualité du signal. (même principe que pour une
librairie que j'avais cité mais certes écrite en C# donc à compiler au
préalable avec Visual C# Express avant utilisation depuis VB).

Resterait donc la durée....

--
Patrice

"LE TROLL" <le a écrit dans le message de
news:
Bonjour,

Débutant vbNet, je cherche des informations réseau, sur lesquelles je ne
connais absolument rien.
A force de demander (sur presqu'un mois quand même), j'ai pu en obtenir
quelques-unes (qui peuvent sans doute être améliorées), soit :

- la connexion
- le nom du PC
- l'adresse IP principale
- le trafic
- la vitesse.

Il me manque 3 informations qui sont :
- la durée (peut se calculer à la rigueur)
- SSID wifi (nom utilisateur wifi)
- qualité de réception (0 à 5)

En fin de compte, tout ça se trouve en cliquant sur l'icône réseau du
systray (ou panneau de configuration), puis centre de réseaux et partages,
puis "voir le statut".

A ce lien, on trouvera un exemple de code vbNet qui permettrait de
compléter ce qu'il me manque, si j'y comprenais quelque chose, c'est ici :

http://mesromans.free.fr/wifivbnet.zip

Notons dans un autre registre, qu'il y a aussi l'api wLanApi.dll qui fait
ce que je cherche, mais c'est encore plus compliqué !

Et voici le code que j'ai actuellement en vbNet, des fonctions sus-citées
que je possède désormais. Ce code comme je le disais est sans doute aussi
à améliorer, mais je n'en ai pas le savoir. Par exemple, parfois je fais
une boucle each, et je récupère seulement l'information du premier
passage, ce qui me convient, mais pourquoi c'est la première information
qui est la bonne (IP par exemple), je n'en sais rien, et je ne sais pas
davantage non plus si ceci va fonctionner dans tous les cas, je constate
simplement qu'à défaut de connaître la chose, et bien ça tourne...
Voici mon code vbNet (compilation d'informations fournies un peu partout :

---



' cle3Gusb form1
Option Explicit On
Imports System.Net.NetworkInformation
Imports System.Net
Imports System.Math
' IL ME MANQUE : durée, SSID wifi, qualité de réception
Public Class Form1
Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim Statistics As IPv4InterfaceStatistics
Dim varHostEntry As IPHostEntry
Dim t1
Dim p1 As Double
Dim p2 As Double
'
TextBox1.Text = ""
t1 = ""
'
' connexion
If My.Computer.Network.IsAvailable Then TextBox1.Text = TextBox1.Text &
"Etat : Connecté" & vbCrLf
If Not My.Computer.Network.IsAvailable Then TextBox1.Text =
TextBox1.Text & "Etat : Déconnecté" & vbCrLf
'
TextBox1.Text = TextBox1.Text & "Computer : " & Environment.UserName &
vbCrLf
'
' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf
'
' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1 +
p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next
'
' vitesse
Dim MonInterface As System.Net.NetworkInformation.NetworkInterface
For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next
End Sub ' form1
End Class


' MANQUE

'- la durée (peut se calculer à la rigueur)
'- SSID wifi (nom utilisateur wifi)
'- qualité de réception (0 à 5)
-----

En vous remerciant, très cordialement.

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.





Avatar
LE TROLL
Bonjour Patrice,

Merci, mais y a un petit problème, il ne reconnait pas wLanClient,
d'ailleurs une recherche wLanClient.exe ne donne rien sur C.

Je suis en vbNet sous Vista32 PC

Voici mon code avec ce que tu m'a fourni :

' cle3Gusb form1 langage vbNet Vista : OBJET = 2 = form1 +
TextBox1.Multiline
Option Explicit On
Imports System.Net.NetworkInformation
Imports System.Net
Imports System.Math

Public Class Form1
Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim Statistics As IPv4InterfaceStatistics
Dim varHostEntry As IPHostEntry
Dim t1
Dim p1 As Double
Dim p2 As Double
'
TextBox1.Text = ""
t1 = ""
'
' connexion
If My.Computer.Network.IsAvailable Then TextBox1.Text = TextBox1.Text &
"Etat : Connecté" & vbCrLf
If Not My.Computer.Network.IsAvailable Then TextBox1.Text =
TextBox1.Text & "Etat : Déconnecté" & vbCrLf
'
TextBox1.Text = TextBox1.Text & "Computer : " & Environment.UserName &
vbCrLf
'
' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf
'
' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1 +
p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next
'
' vitesse
Dim MonInterface As System.Net.NetworkInformation.NetworkInterface
For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next
'
' pseudonymeWifi + qualité_signal
Dim client As New WlanClient ' Pour toutes les cartes Wifi
For Each Int As WlanClient.WlanInterface In client.Interfaces
If Int.InterfaceState = Wlan.WlanInterfaceState.Connected Then '
connectée
Dim strSSID As String = ""
Dim SSID As Wlan.Dot11Ssid =
Int.CurrentConnection.wlanAssociationAttributes.dot11Ssid()
For i As Integer = 0 To SSID.SSIDLength - 1
strSSID &= Chr(SSID.SSID(i))
Next
TextBox1.Text = TextBox1.Text & "SSID = " & strSSID & vbCrLf
TextBox1.Text = TextBox1.Text & "Qualité = " &
Int.CurrentConnection.wlanAssociationAttributes.wlanSignalQuality & vbCrLf
End If
Next
End Sub ' form1
End Class

-----

Les erreurs sont (2) :

Erreur 2 Type 'WlanClient' non défini. (wLanClient)
Avertissement 1 Public Shared Function GetHostByName(hostName As String) As
System.Net.IPHostEntry' est obsolète : 'GetHostByName is obsoleted for this
type, please use GetHostEntry instead.
http://go.microsoft.com/fwlink/?linkid202'


Alors, si tu as une idée pour que ça marche ???

Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Patrice" <http://scribe-fr.blogspot.com/> a écrit dans le message de
news:
Bonjour,

Avec la libraire que tu indiques cela peut donner par exemple en mettant
dans le Form_Load :

Dim client As New WlanClient
' Pour toutes les cartes Wifi...
For Each Int As WlanClient.WlanInterface In client.Interfaces
' ...connectée
If Int.InterfaceState = Wlan.WlanInterfaceState.Connected Then
Dim strSSID As String = ""
Dim SSID As Wlan.Dot11Ssid =
Int.CurrentConnection.wlanAssociationAttributes.dot11Ssid
For i As Integer = 0 To SSID.SSIDLength - 1
strSSID &= Chr(SSID.SSID(i))
Next
Debug.WriteLine("===========")
Debug.WriteLine(strSSID)

Debug.WriteLine(Int.CurrentConnection.wlanAssociationAttributes.wlanSignalQuality)
End If
Next

ce qui donne le SSID et la qualité du signal. (même principe que pour une
librairie que j'avais cité mais certes écrite en C# donc à compiler au
préalable avec Visual C# Express avant utilisation depuis VB).

Resterait donc la durée....

--
Patrice

"LE TROLL" <le a écrit dans le message de
news:
Bonjour,

Débutant vbNet, je cherche des informations réseau, sur lesquelles je ne
connais absolument rien.
A force de demander (sur presqu'un mois quand même), j'ai pu en obtenir
quelques-unes (qui peuvent sans doute être améliorées), soit :

- la connexion
- le nom du PC
- l'adresse IP principale
- le trafic
- la vitesse.

Il me manque 3 informations qui sont :
- la durée (peut se calculer à la rigueur)
- SSID wifi (nom utilisateur wifi)
- qualité de réception (0 à 5)

En fin de compte, tout ça se trouve en cliquant sur l'icône réseau du
systray (ou panneau de configuration), puis centre de réseaux et
partages, puis "voir le statut".

A ce lien, on trouvera un exemple de code vbNet qui permettrait de
compléter ce qu'il me manque, si j'y comprenais quelque chose, c'est ici
:

http://mesromans.free.fr/wifivbnet.zip

Notons dans un autre registre, qu'il y a aussi l'api wLanApi.dll qui fait
ce que je cherche, mais c'est encore plus compliqué !

Et voici le code que j'ai actuellement en vbNet, des fonctions sus-citées
que je possède désormais. Ce code comme je le disais est sans doute aussi
à améliorer, mais je n'en ai pas le savoir. Par exemple, parfois je fais
une boucle each, et je récupère seulement l'information du premier
passage, ce qui me convient, mais pourquoi c'est la première information
qui est la bonne (IP par exemple), je n'en sais rien, et je ne sais pas
davantage non plus si ceci va fonctionner dans tous les cas, je constate
simplement qu'à défaut de connaître la chose, et bien ça tourne...
Voici mon code vbNet (compilation d'informations fournies un peu partout
:

---



' cle3Gusb form1
Option Explicit On
Imports System.Net.NetworkInformation
Imports System.Net
Imports System.Math
' IL ME MANQUE : durée, SSID wifi, qualité de réception
Public Class Form1
Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim Statistics As IPv4InterfaceStatistics
Dim varHostEntry As IPHostEntry
Dim t1
Dim p1 As Double
Dim p2 As Double
'
TextBox1.Text = ""
t1 = ""
'
' connexion
If My.Computer.Network.IsAvailable Then TextBox1.Text = TextBox1.Text
& "Etat : Connecté" & vbCrLf
If Not My.Computer.Network.IsAvailable Then TextBox1.Text =
TextBox1.Text & "Etat : Déconnecté" & vbCrLf
'
TextBox1.Text = TextBox1.Text & "Computer : " & Environment.UserName &
vbCrLf
'
' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf
'
' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1 +
p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next
'
' vitesse
Dim MonInterface As System.Net.NetworkInformation.NetworkInterface
For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next
End Sub ' form1
End Class


' MANQUE

'- la durée (peut se calculer à la rigueur)
'- SSID wifi (nom utilisateur wifi)
'- qualité de réception (0 à 5)
-----

En vous remerciant, très cordialement.

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.








Avatar
Patrice
> Merci, mais y a un petit problème, il ne reconnait pas wLanClient,
d'ailleurs une recherche wLanClient.exe ne donne rien sur C.



Ce n'est pas un fichier exécutable (?!) c'est une classe qui est fournie par
le code que tu as toi même indiqué. J'ai ouvert le projet présent dans le
fichier "wifivbnet.zip" que tu as indiqué puis j'ai mis le code que j'ai
posté dans le Form_Load pour ne sortir que les infos que tu recherches (en
plus d'afficher toute l'interface utilisateur). Resterait alors à nettoyer
ce projet de son interface utilisateur.

--
Patrice
Avatar
LE TROLL
Patrice,

Il doit y avoir des quiproquos, car le zip que j'ai mi est celui d'un
code ramassé sur le Net, en vbNet, venant d'une source C# je crois, or ce
programme (si on peut appeler ça ainsi, car inachevé), affiche déjà la
qualité et le pseudonymeWifi, donc je ne comprends pas ?

J'ai deux autres sources, celle que je viens de coller dans le précédent
mesage, la mienne avec pas mal d'aide, si tu arrivais à faire fonctionner
tes deux routines dans ce code ce serait parfait ?

Et in fine, de repiqué sur le net, en vb6, j'ai un troisième code avec
l'api wLanApi d'une complexité si monstrueuse que tout le monde s'est sauvé
quand j'ai posé la question sur le forum VB.

Sinon, wLanClient, je lai trouvé comme un "exe" sur le net, ici par
exemple (c'est un processus) :
http://www.generation-nt.com/wlanclient-exe-processus-36898.html

-=-=-=-=-=-=-=-=-=-=-

Alors, saurais-tu dans le code sous-cité me faire fonctionner les deux
éléments que je cherche, à savoir la qualité et le pseudonyme wifi, voici le
code :

----début code FORM1 + TETBOX1.MultiLines---
' cle3Gusb form1 langage vbNet Vista
Option Explicit On
Imports System.Net.NetworkInformation
Imports System.Net
Imports System.Math

' IL ME MANQUE : durée, SSID wifi, qualité de réception
Public Class Form1
Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Dim Statistics As IPv4InterfaceStatistics
Dim varHostEntry As IPHostEntry
Dim t1
Dim p1 As Double
Dim p2 As Double
'
TextBox1.Text = ""
t1 = ""
'
' connexion
If My.Computer.Network.IsAvailable Then TextBox1.Text = TextBox1.Text &
"Etat : Connecté" & vbCrLf
If Not My.Computer.Network.IsAvailable Then TextBox1.Text =
TextBox1.Text & "Etat : Déconnecté" & vbCrLf
'
TextBox1.Text = TextBox1.Text & "Computer : " & Environment.UserName &
vbCrLf
'
' IP
varHostEntry = Dns.GetHostByName(System.Net.Dns.GetHostName.ToString)
For Each varAnAddress In varHostEntry.AddressList
t1 = varAnAddress.ToString
Next
TextBox1.Text = TextBox1.Text & "Adr I.P : " & t1 & vbCrLf

'
' Trafic
For Each NetInterface As NetworkInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
If NetInterface.NetworkInterfaceType =
NetworkInterfaceType.Wireless80211 Then
Statistics = NetInterface.GetIPv4Statistics
p1 = System.Math.Round(Statistics.BytesSent / 1048576, 2)
p2 = Round(Statistics.BytesReceived / 1048576, 2)
TextBox1.Text = TextBox1.Text & "Trafic : " & Format(Round(p1 +
p2, 3), "# ##0.000") & " Mo" & vbCrLf
End If
Next
'
' vitesse
Dim MonInterface As System.Net.NetworkInformation.NetworkInterface
For Each MonInterface In
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
TextBox1.Text = TextBox1.Text & "Vitesse : " &
MonInterface.Speed.ToString 1048576 & " Mo/s" & vbCrLf
Exit For
Next
'
' TON CODE
' pseudoWifi + qualité signal
'Dim client As New WlanClient ' Pour toutes les cartes Wifi
'For Each Int As WlanClient.WlanInterface In client.Interfaces
' If Int.InterfaceState = Wlan.WlanInterfaceState.Connected Then '
connectée
' Dim strSSID As String = ""
' Dim SSID As Wlan.Dot11Ssid =
Int.CurrentConnection.wlanAssociationAttributes.dot11Ssid()
' For i As Integer = 0 To SSID.SSIDLength - 1
'strSSID &= Chr(SSID.SSID(i))
'Next
'TextBox1.Text = TextBox1.Text & "SSID = " & strSSID & vbCrLf
'TextBox1.Text = TextBox1.Text & "Qualité = " &
Int.CurrentConnection.wlanAssociationAttributes.wlanSignalQuality & vbCrLf
'End If
'Next
End Sub ' form1
End Class
-------------fin du code, ton code est in fne---


???


Cordialement ;o)

-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Patrice" <http://scribe-fr.blogspot.com/> a écrit dans le message de
news:%
Merci, mais y a un petit problème, il ne reconnait pas wLanClient,
d'ailleurs une recherche wLanClient.exe ne donne rien sur C.



Ce n'est pas un fichier exécutable (?!) c'est une classe qui est fournie
par le code que tu as toi même indiqué. J'ai ouvert le projet présent dans
le fichier "wifivbnet.zip" que tu as indiqué puis j'ai mis le code que
j'ai posté dans le Form_Load pour ne sortir que les infos que tu
recherches (en plus d'afficher toute l'interface utilisateur). Resterait
alors à nettoyer ce projet de son interface utilisateur.

--
Patrice



1 2