Recuperer toutes les adresses ip de la machine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 017 fois - Téléchargée 66 fois

Contenu du snippet

Creer un module et un formulaire avec un bouton.

Source / Exemple :


' ***************************************************
' Dans un module :
' ***************************************************

Public Type RESUL_IP
    IPAdr As String
    IPMask As String
    Interface_Nbre As String
End Type

Public Type DBYTE
    unused1 As Byte
    unused2 As Byte
End Type

Public Type MIB_IPADDRROW
    dwAddr As Long        ' IP address
    dwIndex As Long       ' interface index
    dwMask As Long        ' subnet mask
    dwBCastAddr As Long   ' broadcast address
    dwReasmSize As Long   ' rassembly size
    unused1 As DBYTE      ' not currently used
    unused2 As DBYTE      ' not currently used
End Type

Public Type MIB_IPADDRTABLE
    dwNumEntries As Long
    table(400) As MIB_IPADDRROW
End Type

' recupere le nombre d'interface sur le pc
Public Declare Function GetNumberOfInterfaces Lib "iphlpapi.dll" _
   (ByRef PDWORD As Long) As Long

 ' recupere les adresses IP de la machine
Public Declare Function GetIpAddrTable Lib "iphlpapi.dll" _
    (ByRef pIpAddrTable As MIB_IPADDRTABLE, _
     ByRef pdwSize As Long, _
     bOrder As Boolean) As Long
Public Function FIRST_IPADDRESS(ByVal ipAddress As Long) As Long
    FIRST_IPADDRESS = Val("&H" & Left(Right("00000000" & Hex(ipAddress), 8), 2))
End Function
Public Function SECOND_IPADDRESS(ByVal ipAddress As Long) As Long
    SECOND_IPADDRESS = Val("&H" & Mid(Right("00000000" & Hex(ipAddress), 8), 3, 2))
End Function
Public Function THIRD_IPADDRESS(ByVal ipAddress As Long) As Long
    THIRD_IPADDRESS = Val("&H" & Mid(Right("00000000" & Hex(ipAddress), 8), 5, 2))
End Function
Public Function FOURTH_IPADDRESS(ByVal ipAddress As Long) As Long
    FOURTH_IPADDRESS = Val("&H" & Right("00" & Hex(ipAddress), 2))
End Function
Function recup_ip(Num_interface As Long) As RESUL_IP
    'recupere l'adresse ip de l'interface passée en paramettre
    Dim toto1 As MIB_IPADDRTABLE
    Dim toto2 As Long
    toto2 = 400
    yop1 = GetIpAddrTable(toto1, toto2, True)
    recup_ip.IPAdr = FOURTH_IPADDRESS(toto1.table(Num_interface).dwAddr) & "." & _
             THIRD_IPADDRESS(toto1.table(Num_interface).dwAddr) & "." & _
             SECOND_IPADDRESS(toto1.table(Num_interface).dwAddr) & "." & _
             FIRST_IPADDRESS(toto1.table(Num_interface).dwAddr)
    recup_ip.IPMask = FOURTH_IPADDRESS(toto1.table(Num_interface).dwMask) & "." & _
             THIRD_IPADDRESS(toto1.table(Num_interface).dwMask) & "." & _
             SECOND_IPADDRESS(toto1.table(Num_interface).dwMask) & "." & _
             FIRST_IPADDRESS(toto1.table(Num_interface).dwMask)
    recup_ip.Interface_Nbre = toto1.table(Num_interface).dwIndex
End Function

' ********************************************************
' Dans ton formulaire tu pose un bouton et le code suivant
' ********************************************************
Private Sub Command1_Click()
    Dim cpt As Long
    Dim Resultat_IP As String
    For cpt = 0 To Val(Test) - 1
        Resultat_IP = Resultat_IP & "Adresse IP" & cpt + 1 & " : " & recup_ip(cpt).IPAdr & vbcrl
        Resultat_IP = Resultat_IP & vbTab & "Mask : " & recup_ip(cpt).IPMask & vbCrLf
    Next cpt
    MsgBox Resultat_IP
End Sub
Function Test() As Long
    ' recupere le nombre d'interface de la machine
    yop = GetNumberOfInterfaces(toto)
    If yop = 0 Then
        Test = toto
    End If
End Function

A voir également

Ajouter un commentaire

Commentaires

resultat mitigé : le programme ne récupère pas l'adresse ip d'un pc connecté en réseau, ni des imprimanetes connectées et qui disposent d'une ip !
Ce bout de code permet de récupérer "toutes" les adresses IP d'une seule machien. SI ta machine est en réseau et que tu te connecte a internet avec un modem, tu te retrouves avec 2 adresses IP ... Avec un controle Winsock tu ne recupere qu'une seule adresse.
Je ne sais pas comment recuperer ta source ???
Foxix
Messages postés
12
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
12 mars 2002
-
je vais faire un essai
flagada42
Messages postés
15
Date d'inscription
lundi 31 décembre 2001
Statut
Membre
Dernière intervention
23 juin 2003
-
très bonne source a mon avis car si l'ordi est connecté en réseau on récupère plusieurs adresse ip (local + internet).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.