Mac adresse 0.0.0.0.0.0

Signaler
Messages postés
55
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
15 septembre 2006
-
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
-
Salut,

Ce n'est pas la permière fois que quelqu'un demande ça mais les réponses données ne sont pas claires et je n'ai pas trouvé de solution.

J'utilise un code trouvé sur VBFrance, et sur certains postes de mon parc informatique l'adresse Mac que me renvoit mon prog est 0.0.0.0.0.0.

Avez-vous une explication?

J-L

7 réponses

Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Je ne sais pas ce que tu utilises comme code mais test ça :

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=44583&lngWId=1

It@li@
Messages postés
55
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
15 septembre 2006

Ton prog fonctionne mais il demande WMI, mais WMI n'est pas installé sur tous les postes.

J-L
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Messages postés
55
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
15 septembre 2006

Il ne s'occupe pas de l'adresse Mac, de plus il utilise Winsock.
Je suis chiant mais je ne peux utiliser ni Winsock, ni WMI.

J-L
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
Salut, ton prog agit à distance ou il est installé sur chaque poste ?

Si c'est à distance, va voir du côté SendARP :

http://vbnet.mvps.org/index.html?code/main/tocbyuse.htm

Cordialement, CanisLupus
Messages postés
55
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
15 septembre 2006

Il est installé sur chaque poste.

J-L
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
Si c'est sur les postes, alors moi j'utilise ça :

Dans un module

Private Const ERROR_SUCCESS As Long = 0
Private Const MAX_INTERFACE_NAME_LEN As Long = 256
Private Const MAXLEN_IFDESCR As Long = 256
Private Const MAXLEN_PHYSADDR As Long = 8


Private Type MIB_IFROW
wszName(0 To (MAX_INTERFACE_NAME_LEN - 1) * 2) As Byte
dwIndex As Long
dwType As Long
dwMtu As Long
dwSpeed As Long
dwPhysAddrLen As Long
bPhysAddr(0 To MAXLEN_PHYSADDR - 1) As Byte
dwAdminStatus As Long
dwOperStatus As Long
dwLastChange As Long
dwInOctets As Long
dwInUcastPkts As Long
dwInNUcastPkts As Long
dwInDiscards As Long
dwInErrors As Long
dwInUnknownProtos As Long
dwOutOctets As Long
dwOutUcastPkts As Long
dwOutNUcastPkts As Long
dwOutDiscards As Long
dwOutErrors As Long
dwOutQLen As Long
dwDescrLen As Long
bDescr(0 To MAXLEN_IFDESCR - 1) As Byte
End Type


Private Type Infos_Interface
Adresse_MAC As String
Type_Interface As String
Vitesse As String
Description As String
End Type


Public Infos() As Infos_Interface


Private Declare Function GetIfTable _
Lib "iphlpapi.dll" _
( _
ByRef pIfTable As Any, _
ByRef pdwSize As Long, _
ByVal bOrder As Long _
) As Long


Declare Sub CopyMemory _
Lib "kernel32" Alias "RtlMoveMemory" _
( _
pDst As Any, _
pSrc As Any, _
ByVal ByteLen As Long _
)


Public Sub Infos_Carte_Reseau()
Dim IPInterfaceRow As MIB_IFROW
Dim buff() As Byte
Dim cbRequired As Long
Dim nStructSize As Long
Dim nRows As Long
Dim cnt As Long

Call GetIfTable(ByVal 0&, cbRequired, 1)


If cbRequired > 0 Then


ReDim buff(0 To cbRequired - 1) As Byte

If GetIfTable(buff(0), cbRequired, 1) = ERROR_SUCCESS Then

' Sauvegarde de la longueur en octets de IPInterfaceRow
nStructSize = LenB(IPInterfaceRow)


' Nombre d'entrées de la table (nb d'interfaces réseau détectées)
CopyMemory nRows, buff(0), 4

ReDim Infos(nRows)

For cnt = 1 To nRows
DoEvents
' Type d'interface pour chaque entrée de la table
CopyMemory IPInterfaceRow, buff(4 + (cnt - 1) * nStructSize), nStructSize

' Adresse mac
Infos(cnt).Adresse_MAC = Replace(Format(Hex(IPInterfaceRow.bPhysAddr(0)), "@@"), " ", "0") & " " & _
Replace(Format(Hex(IPInterfaceRow.bPhysAddr(1)), "@@"), " ", "0") & " " & _
Replace(Format(Hex(IPInterfaceRow.bPhysAddr(2)), "@@"), " ", "0") & " " & _
Replace(Format(Hex(IPInterfaceRow.bPhysAddr(3)), "@@"), " ", "0") & " " & _
Replace(Format(Hex(IPInterfaceRow.bPhysAddr(4)), "@@"), " ", "0") & " " & _
Replace(Format(Hex(IPInterfaceRow.bPhysAddr(5)), "@@"), " ", "0")

Next cnt

End If

End If

End Sub


Et tu interroges comme ça :

Dim i As Integer
Infos_Carte_Reseau
For i = 1 To UBound(Infos)
MsgBox Infos(i).Adresse_MAC
Next

Explications : il peut y avoir plusieurs cartes réseau, voire des cartes virtuelles. Chez moi, c'est le plus souvent la dernière de la liste qui est la bonne.

Cordialement, CanisLupus