Recuperer toutes les adresses ip de la machine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 179 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

Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

C'est programmé n'importe comment, vive les noms des variables "toto1, toto2, yop1" et des types perso... (le meilleur reste quand meme le nom des fonctions)
En gros, beaucoup de travail pour arriver à tirer quelque chose d'interessant de ce code alors que ça n'est pas très compliqué.
Messages postés
91
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
23 mai 2005

ne marche pas pour les routeurs et réseaux local connectés à internet sa donne l'ip locale 127.0.0.1 . . .
mais bonne idée quand même
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009

mais si on a + de 4 IP ?? parce que je ne vois que 4 fonctions différentes??
Messages postés
80
Date d'inscription
lundi 23 décembre 2002
Statut
Membre
Dernière intervention
1 mars 2011

excellent, et en plus ca fonctionne, rien a dire...
Messages postés
107
Date d'inscription
vendredi 8 novembre 2002
Statut
Membre
Dernière intervention
28 mars 2011

salut,

Je c comment récupéré l'ip internet, é l'ip de la machine en réseau, mais je c pa comment m'en servir pour me connecter en winsock...quelqu'un peut m'expliquer ??

++

Merci d'avance !

Disicom
Afficher les 14 commentaires

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.