Evo ovde mozes pogledati jos neke od nacina za uzimanje MAC adresa sa racunara
koji su prilagodjeni za Borland C++ Builder...
http://bdn.borland.com/article/0,1410,26040,00.html
... ipak, koliko se secam, ima nekih problema sa kodom koji je dat. Ako budes hteo
neko drugo resenje imam ih i ja u arsenalu barem jos par komada...
P.S.
Setih se jos jednog koda, koji sam nekada koristio kao blic proveru da li je moj ID razbijen. Zapravo vrsio sam ekstrakciju rezultata komandi ipconfig winipcfg u neki
fajl i njega naknadno parsovao.
Kod je pod komentarima jer sam ga davno penzionisao:
Code:
/*
AnsiString TryToGetMAC_REDIRECT()
{
// Odredi TEMP direktorijum...
char TempDir[ MAX_PATH +1 ];
TempDir[ MAX_PATH ] = '\0';
GetTempPath( MAX_PATH, TempDir );
// Formiraj gde cemo smestiti KUKAVICIJI FAJL
AnsiString KF = (AnsiString)TempDir + "nic.tmp";
//AnsiString KF = ExtractFilePath(ParamStr(0)) + "nic.tmp";
// Obrisi stari ako ga ima...
DeleteFile( KF );
// Formiraj argument ...
AnsiString ARGV;
// Odredi pravi argument...
if ( IsWindows9X() == true )
{
ARGV = Format( "/c winipcfg.exe /all /batch %s", ARRAYOFCONST (( KF )) );
}
else
{
ARGV = Format( "/c ipconfig.exe /all > %s", ARRAYOFCONST (( KF )) );
}
// Startuje BATCH komandu
int rez = (int)ShellExecute( Application->Handle,
"open",
"command.com",
ARGV.c_str(),
NULL,
SW_HIDE );
if ( rez <= 32 )
{
ShowMessage("Internal Error!");
return ( "!" );
}
// OVDE TREBA PETLJA DOK NE ZAVRSI...
volatile bool postoji = false;
for ( int m=GetTickCount(); ( GetTickCount() - m < 5000 ) && ( postoji == false ); )
{
postoji = FileExists( KF );
}
// Ako fajla ipak nema - vrati se!
if ( FileExists( KF ) == false )
{ ShowMessage("Nema fajla - a trebao je da bude!");
return ( "!" );
}
// Odredi duzinu novog fajla
int handle, flength = 0;
if ( ( handle = open ( KF.c_str(), O_RDONLY | O_BINARY ) ) == -1 )
{
return ( "!" );
}
flength = filelength ( handle );
close ( handle );
// Probaj da otvoris fajl...
FILE *p;
p = fopen ( KF.c_str(), "r+b" );
if ( !p )
{
return ( "!" );
}
char *buffer = new char[ flength + 1 ];
if ( !buffer )
{
return ( "!" );
}
fread( buffer, flength, 1, p );
fclose ( p );
if ( DeleteFile( KF ) == false )
{
ShowMessage("Sada ne mogu da ga obrisem!");
}
for ( int i=0; i<flength; i++ )
{
if ( buffer[i+2 ] == '-' &&
buffer[i+5 ] == '-' &&
buffer[i+8 ] == '-' &&
buffer[i+11] == '-' &&
buffer[i+14] == '-' )
{
char broj[13];
broj[0] = buffer[i+0];
broj[1] = buffer[i+1];
broj[2] = buffer[i+3];
broj[3] = buffer[i+4];
broj[4] = buffer[i+6];
broj[5] = buffer[i+7];
broj[6] = buffer[i+9];
broj[7] = buffer[i+10];
broj[8] = buffer[i+12];
broj[9] = buffer[i+13];
broj[10] = buffer[i+15];
broj[11] = buffer[i+16];
broj[12] = '\0';
// ovo je modem
if ( AnsiString( broj ) != "444553540000" )
{
delete [] buffer;
ShowMessage( AnsiString ( broj ) );
return ( AnsiString ( broj ) );
}
}
}
delete [] buffer;
return ( C(IDS_SER_NICID_BLANK_NIC) );
}
*/
[Ovu poruku je menjao X Files dana 01.12.2005. u 20:48 GMT+1]