bonjour,
j'aimerais savoir comment obtenir l'adresse mac d'un pc.
si quelqu'un a des infos...
merci
bonjour,
j'aimerais savoir comment obtenir l'adresse mac d'un pc.
si quelqu'un a des infos...
merci
bjr,
moi j'ai cherché adresse MAC sur le forum...j'ai trouvé ça...
http://www.developpez.net/forums/vie...ht=adresse+mac
![]()
tch'o
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _
La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _
Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
ok merci,
j'avais fait la meme chose et effectivement je suis tombé sur le lien de borland. Masi en fait j'ai du copier coller de la deuxieme solution et ça ne marche pas. J'ai du mal à faire le débugage car je n'arrive pas à comprendre le code.
j'ai une erreur de compilation en me disant qu'il ne connait pas la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include <windows.h> #include <iostream> #include <conio.h> using namespace std; int main() { cout << "MAC address is: "; // Ask COM to create a UUID for us. If this machine has an Ethernet // adapter, the last six bytes of the UUID (bytes 2-7 inclusive in // the Data4 element) should be the MAC address of the local // Ethernet adapter. GUID uuid; CoCreateGuid(&uuid); // Spit the address out char mac_addr[18]; sprintf(mac_addr,"%02X:%02X:%02X:%02X:%02X:%02X", uuid.Data4[2],uuid.Data4[3],uuid.Data4[4], uuid.Data4[5],uuid.Data4[6],uuid.Data4[7]); cout << mac_addr << endl; getch(); return 0; }
CoCreateGuid(&uuid);
Que faire ?
merci
pour utiliser CoCreateGUID il faut inclure :
pour utiliser sprintf :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <vcl\OleAuto.hpp>
ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <stdio.h>
mais chez moi ça donne de résultats plus que douteux ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void __fastcall TForm1::Button1Click(TObject *Sender) { GUID uuid; CoCreateGuid(&uuid); // Spit the address out char mac_addr[18]; sprintf(mac_addr,"%02X:%02X:%02X:%02X:%02X:%02X",uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],uuid.Data4[5],uuid.Data4[6],uuid.Data4[7]); ShowMessage(String(mac_addr)); }
il y a une autre méthode qui semble donner des résultats plus pertinents chez moi : ( methode directement pompée sur le site de codeguru et adaptée à BCB)
il faut cependant ajouter à ton projet la librairie Iphlpapi.lib ( trouvable dans le répertoire $BCB\lib\psdk )
avec cette méthode j'ai des résultats plus cohérents
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <Iphlpapi.h> #include <Assert.h> //--------------------------------------------------------------------------- String __fastcall AdapterInfoAdressToString(unsigned char MACData[]) { String res; res.sprintf("%02X:%02X:%02X:%02X:%02X:%02X", MACData[0], MACData[1], MACData[2], MACData[3], MACData[4], MACData[5]); return res; } //--------------------------------------------------------------------------- static void GetMACaddress(TStringList * LMAcAddresses) { if(LMAcAddresses==NULL) return; IP_ADAPTER_INFO AdapterInfo[16]; DWORD dwBufLen = sizeof(AdapterInfo); DWORD dwStatus = GetAdaptersInfo( AdapterInfo, &dwBufLen); assert(dwStatus == ERROR_SUCCESS); PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; do { LMAcAddresses->Add(AdapterInfoAdressToString(pAdapterInfo->Address)); pAdapterInfo = pAdapterInfo->Next; } while(pAdapterInfo); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { TStringList *LMAcAddresses = new TStringList(); GetMACaddress(LMAcAddresses); Memo1->Lines=LMAcAddresses; } //---------------------------------------------------------------------------
j'ai essayé les deux méthodes et aucune des deux me donne véritablement mon adresse mac
bizard non ?
ah bizzare chez moi
2 carte reseau une classique et wifi,
j'ai les 2 adresses conformes aux résultats donnés par "ipconfig /all "
tu as quoi comme résultat pour la 2eme méthode ? quelque chose qui commence par 00 ? ou autre chose ...
sous quel OS tourne tu ?
J'ai testé aussi
sur un poste sous windows 2000
toujours des bons résultats,
si plusieurs personnes pouvaient tester ...
Je suis sous XP pro. Mon adresse mac est : 00-08-02-D6-B6-73
A chaque fois que je clique sur mon bouton j'ai des adresses différentes à chaque fois.
Pour info je n'arrive pas avoir la mienne
merci
J'ai le même phénomène quand j'utilise la méthode 1.
#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 include <windows.h> #include <stdlib.h> #include <stdio.h> #include <iostream> #include <strstream> #include <string> #include <vcl.h> #pragma hdrstop #include "File1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { using namespace std; //========= C++ Code : BEGIN ========= LANA_ENUM AdapterList; NCB Ncb; memset(&Ncb, 0, sizeof(NCB)); Ncb.ncb_command = NCBENUM; Ncb.ncb_buffer = (unsigned char *)&AdapterList; Ncb.ncb_length = sizeof(AdapterList); Netbios(&Ncb); string sMAC; cout << "MY INFO : AdapterList.length = " << static_cast<int>(AdapterList.length) << endl; for (int i = 0; i < AdapterList.length; ++i) { if (GetAdapterInfo(AdapterList.lana[i], sMAC)) { List->Items->Add(sMAC.c_str()); cout << "Adapter " << int (AdapterList.lana[i]) << "'s MAC is " << sMAC << endl; } else { cerr << "Failed to get MAC address! Do you" << endl; cerr << "have the NetBIOS protocol installed?" << endl; break; } } //return 0; } //------------------------------------------------------ bool TForm1::GetAdapterInfo(int nAdapterNum, string & sMAC) { NCB Ncb; memset(&Ncb, 0, sizeof(Ncb)); Ncb.ncb_command = NCBRESET; Ncb.ncb_lana_num = nAdapterNum; if (Netbios(&Ncb) != NRC_GOODRET) { char acTemp[80]; ostrstream outs(acTemp, sizeof(acTemp)); outs << "error " << Ncb.ncb_retcode << " on reset" << ends; sMAC = acTemp; return false; } memset(&Ncb, 0, sizeof(Ncb)); Ncb.ncb_command = NCBASTAT; Ncb.ncb_lana_num = nAdapterNum; strcpy((char *) Ncb.ncb_callname, "*"); struct ASTAT { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff[30]; }Adapter; memset(&Adapter, 0, sizeof(Adapter)); Ncb.ncb_buffer = (unsigned char *)&Adapter; Ncb.ncb_length = sizeof(Adapter); if (Netbios(&Ncb) == 0) {char acMAC[18]; sprintf(acMAC, "%02X %02X %02X %02X %02X %02X", int (Adapter.adapt.adapter_address[0]), int (Adapter.adapt.adapter_address[1]), int (Adapter.adapt.adapter_address[2]), int (Adapter.adapt.adapter_address[3]), int (Adapter.adapt.adapter_address[4]), int (Adapter.adapt.adapter_address[5])); sMAC = acMAC; return true; } else {char acTemp[80]; ostrstream outs(acTemp, sizeof(acTemp)); outs << "error " << Ncb.ncb_retcode << " on ASTAT" << ends; sMAC = acTemp; return false; } } /////////////////////////////// le Unit1.h ////////////////////////////// #ifndef File1H #define File1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Composants gérés par l'EDI TGroupBox *GroupBox1; TListBox *List; private: // Déclarations utilisateur bool GetAdapterInfo(int,string &); public: // Déclarations utilisateur __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
en faite , tu peux retirer les cout <<
creer une interface et tu y place une Tlist , si tu as x carte reseau tu aura x adresse mac.
@++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager