Enumérer les interfaces réseau

Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Bonjour à tous,
voilà je suis confronté à un bon problème et ça fait quelques heures que je cherche en vain.
J'aimerais lister les interfaces réseaux actives.
En gros, récupérer le nom des interfaces / connexions, ça serait déjà ça.
Après si il y avait possibilité de récupérer les adresses ip de l'interface, et le nom d'octets envoyés/reçus

Enfin c'est surtout déjà de pouvoir lister les noms des interfaces (ou connexions je ne sais pas)

Merci d'avance

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st

11 réponses

Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Bonsoir,
As-tu regardé du côté de la classe wmi Win32_NetworkAdapter ?
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Merci je suis en train de regarder ça (et si au pire je tombe mort de sommeil devant mon écran je regarde demain).
Effectivement j'avais pas du tout pensé au wmi, en ce moment je me suis familiarisé avec les compteurs de performance sous PDH et j'en oublie les wmi
(comme quoi je pensais tout le monde dormais à cette heure la )

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
Messages postés
59
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
9 août 2007
1
Salut,

Regarde ce tutoriel tu devrais trouver ton bonheur si tu développe en vb2005.

http://webman.developpez.com/articles/dotnet/reseau/vb/net/

eXclusif
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Wouhou c'est magique les wmi, il faut vraiment que je m'y mette à fond.

Sinon j'ai fait un truc à 2 balle pour tester qui ressemble à ça :


    Set WMIObjectSet = GetObject("winmgmts:").InstancesOf("Win32_NetworkAdapter")

        'On fait une boucle sur tout les objet de la classe

    For Each WMIObject In WMIObjectSet

            'on séléctionne les obejets que l'on veut

        If WMIObject.NetConnectionStatus = 2 Then Form1.Print WMIObject.Name

    Next

Et ça me renvoie bien les meme connexions que dans le gestionnaire des taches.


C'est vraiment magique (un peu long au chargement mais bon), j'aime les WMI lol

Merci beaucoup

Exclusif > Merci pour le lien, je vais y jeter un coup d'oeil, mais je ne développe pas en VB2005

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
Messages postés
59
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
9 août 2007
1
Désolé ;)

Par contre tu peux aussi récupéré WmiCodeCreator ça te rendra service !

eXclusif
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Cool je viens de télécharger, je regarde.
Merci

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
J'avais déposé cette source pour récupérer l'IP de chacune des cartes réseau d'une machine
http://www.vbfrance.com/codes/AFFICHAGE-ADRESSES-IP-QUAND-ON-PLUSIEURS-CARTES-RESEAU_3940.aspx
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Merci jack, j'était tombé sur ta source et j'avais regardé, mais avec ton code on obtenait que les adresses ip (et masques) je crois. J'avais besoin de mon coté des noms des interfaces.

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Dites, j'arrive bien à récupérer toutes les interfaces réseaux (je n'ai sélectionné que les actives). Mais maintenant j'aimerais pouvoir récupérer nombre d'octets qui y transitent (par seconde ou au total).
J'ai essayé avec 2 façons :
Avec RasConnection
    Dim Stats As RAS_STATS
    RasGetConnectionStatistics hConnection, VarPtr(Stats)
    Ici il faut fournir le handle de la connection de type RasConnection (que je ne connais pas, donc je n'y arrive pas)
Avec les WMI
    dans Win32_PerfRawData_Tcpip_NetworkInterface
    ou Win32_PerfFormattedData_Tcpip_NetworkInterface
    J'arrive bien à récupérer les octets, mais le problème c'est pour faire le lien entre mes interfaces réseau que j'ai listé et les valeurs que j'obtient.
    Ici en listant il n'y a que la propriété Name qui peut me renvoyer une indication de l'interface réseau, mais ça ne correspond pas à la propriété name des interfaces listées avec Win32_NetworkAdapter (ni même avec aucune autre de leurs propriétés)

Donc en gros, j'ai d'un coté mes interfaces réseau, de l'autre les statistiques, mais je n'arrive pas à les relier (la bonne interface pour les stat correspondantes).

Si vous avez une idée merci !

PS : Exclusif : le WMI Creator c'est super ^^

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
Messages postés
2167
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
1
Bon je crois qu'il faudrait plutot que je regarde du coté des api "IP Helper"
En effet j'ai trouvé d'autre post en anglais de gens qui n'arrivait pas (tout comme moi) à relier Win32_PerfRawData_Tcpip_NetworkInterface et Win32_NetworkAdapter, et apparement ils n'ont pas trouvé de solution.
Pourtant, ouvrez le gestionnaire des taches, à l'onglet réseau, et vous voyez bien autant de graphes que de connexions actives (avec les titres des graphes exactement les meme que dans Win32_NetworkAdapter et avec le traffic )

Sur la msdn ils parlent donc des IP Helper et voici pour l'instant mon bout de code qui permettrais (à terme lol) de lister les interfaces réseau :
' Renvoie 0 si succès / NbInterface contient le nombre d'interfaces réseau
Public Declare Function GetNumberOfInterfaces Lib "iphlpapi" (NbInterfaces As Long) As Long
' Renvoie 0 si succès / Permet de récupérer les infos des interfaces réseau
Public Declare Function GetInterfaceInfo Lib "iphlpapi" (pIfTable As Long, lOutBufLen As Long) As Long
' Un adaptateur réseau
Public Type IP_ADAPTER_INDEX_MAP
    Index As Long                       ' Index
    'Name(255) as byte
    Name As String                     ' Nom de l'adaptateur
End Type
' Une interface réseau
Public Type IP_INTERFACE_INFO
  NumAdapters As Long                   ' Le nombre d'adaptateurs réseaux
  Adaptater() As IP_ADAPTER_INDEX_MAP   ' Le tableau des infos sur les adaptateurs
End Type

' Liste les interfaces réseau
Public Function mnetListNetworkInterfaces(ByRef NetWorkInterfaces As IP_INTERFACE_INFO)
    Dim Info            As IP_INTERFACE_INFO
    Dim pInfo           As Long
    Dim lOutBufLen      As Long
    Dim NbInterfaces    As Long
    Dim T               As Long
    Const ERROR_INSUFFICIENT_BUFFER = &H7A
    ' Récupère le nombre d'interfaces
    GetNumberOfInterfaces NbInterfaces
    ReDim Info.Adaptater(NbInterfaces - 1) As IP_ADAPTER_INDEX_MAP
    ' Génère de la place pour la table
    pInfo = LocalAlloc(LMEM_FIXED Or LMEM_ZEROINIT, Len(Info))
    MoveMemory pInfo, Info, Len(Info)
    ' Récupère la bonne taille pour le tableau
    If GetInterfaceInfo(pInfo, lOutBufLen) = ERROR_INSUFFICIENT_BUFFER Then
        LocalFree pInfo
        pInfo = LocalAlloc(LMEM_FIXED Or LMEM_ZEROINIT, lOutBufLen)
        MoveMemory pInfo, Info, Len(Info)
    End If
    If GetInterfaceInfo(pInfo, lOutBufLen) = 0 Then
        MoveMemory Info, pInfo, lOutBufLen
        LocalFree pInfo
        NetWorkInterfaces = Info
    End If
End Function

Mais bon vous vous en doutez si je le poste ici, c'est que ce code ne marche pas...
Voici les liens qui m'ont permis d'arriver à ça :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/managing_interfaces.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/getinterfaceinfo.asp

Si quelqu'un a un idée, un énooorme merci
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st