Asuntos Oficiales > C/C++
Conocer La Mac Address De Tu Pc
_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
[#] Página Siguiente
Ir a la versión completa