Recuperer toutes les adresses ip de la machine

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

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.