Asuntos Oficiales > C/C++

 Conocer La Mac Address De Tu Pc

(1/2) > >>

_Viktor:
Hola, aqui esta el codigo:


--- Código: Text --- #include <windows.h> #include <iostream> #include <conio.h>  using namespace std;  int main() {     cout << "direccion MAC es: ";      GUID uuid;     CoCreateGuid(&uuid);     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; }     
eso para C++, si se quisiera aplicar a un programa hecho en C++ Builder seria asi:


--- Código: Text --- //---------------------------------------------------------------------------#include <vcl.h>#include <iostream.h>#include <conio.h>#pragma hdrstop #include "Unit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)        : TForm(Owner){}//--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender){   using namespace std;   GUID uuid;   CoCreateGuid(&uuid);   char mac_addr[18];    //obtenemos los datos y los almacenamos en mac_Addr   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]);  //como mac_addr es char[], hacemos un cast a String    Edit1->Text= String(mac_addr);   //y listo !!!}//---------------------------------------------------------------------------   
Asi de simple....


Suerte!

Iluvatarm:
Hola,
he probado el código para C++ y la verdad es que no me funciona: Efectivamente da un identificador de 128 bits (GUID), pero en cada ejecución da uno distinto... al menos en mi caso, VC++ 6.0...

de todas maneras intentaré investigar si encuentro alguna cosilla.

hasta luego!

 :)

IluvatarM

_Viktor:
Codigo correcto, mis disculpas: :P


--- Código: Text ---void GetMac(TStrings* pslStrings){ int ilRetVal = 0;   NCB stNetCtrlBlock; LPVOID pASTAT; ASTAT stAdapterStatus;   LANA_ENUM stLanEnum;   if(pslStrings != NULL) pslStrings->Clear();  memset(&stNetCtrlBlock, 0, sizeof(stNetCtrlBlock)); stNetCtrlBlock.ncb_command = NCBENUM; stNetCtrlBlock.ncb_buffer = (UCHAR *)&stLanEnum; stNetCtrlBlock.ncb_length = sizeof(stLanEnum); Netbios(&stNetCtrlBlock); ilRetVal = stLanEnum.length;  if(pslStrings != NULL) {   for(int ilAdapter=0; ilAdapter < ilRetVal; ilAdapter++)   {     memset(&stNetCtrlBlock, 0, sizeof(stNetCtrlBlock));     stNetCtrlBlock.ncb_command = NCBRESET;     stNetCtrlBlock.ncb_lana_num =   stLanEnum.lana[ilAdapter];     Netbios(&stNetCtrlBlock);     memset( &stNetCtrlBlock, 0, sizeof(stNetCtrlBlock) );     stNetCtrlBlock.ncb_command = NCBASTAT;     stNetCtrlBlock.ncb_lana_num =   stLanEnum.lana[ilAdapter];     strcpy(stNetCtrlBlock.ncb_callname,"*               ");     stNetCtrlBlock.ncb_length = sizeof(stAdapterStatus);      pASTAT=HeapAlloc(GetProcessHeap(),HEAP_GENERATE_EXCEPTIONS|       HEAP_ZERO_MEMORY, stNetCtrlBlock.ncb_length);      if(pASTAT != NULL)     {       stNetCtrlBlock.ncb_buffer=(UCHAR *)pASTAT;       Netbios(&stNetCtrlBlock);       CopyMemory(&stAdapterStatus,stNetCtrlBlock.ncb_buffer,         sizeof(stAdapterStatus));       AnsiString slMacAddress;       for(int i =0; i < 6; i++)       {         slMacAddress +=IntToHex(stAdapterStatus.           adapt.adapter_address[i],2);         if(i<5) slMacAddress+="-";       }       HeapFree(GetProcessHeap(),0,pASTAT);       pslStrings->Add(slMacAddress);     }     else ilRetVal = 0;   } }   } 
Las direcciones MAC de todas las Tarjetas de red presentes en el pc quedan en la lista de Strings recibida por parametros...

Saludos...

weps84:
Buenos dias, estuve probando el ultimo codigo pero me aperece un error, lo estoy ejecutando en builder c++ 6 no se si eso tenga algo que ver me dice:

[C++ Error] mca2.cpp(33): E2451 Undefined symbol 'ASTAT'

entonces no encuentro por ningun lado la solucion no se si es que me falta una libreria y no lo se

agradezco su ayuda

 :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:

Eternal Idol:

--- Cita de: "weps84" --- Buenos dias, estuve probando el ultimo codigo pero me aperece un error, lo estoy ejecutando en builder c++ 6 no se si eso tenga algo que ver me dice:

[C++ Error] mca2.cpp(33): E2451 Undefined symbol 'ASTAT'

entonces no encuentro por ningun lado la solucion no se si es que me falta una libreria y no lo se

agradezco su ayuda

 :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:  :lightsabre:
--- Fin de la cita ---
NETBIOS ASTAT en Google.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa