یادداشت های برنامه نویس

تجربیات و سورس کدهای رایگان در زمینه برنامه نویسی دلفی و دیتابیس ها

یادداشت های برنامه نویس

تجربیات و سورس کدهای رایگان در زمینه برنامه نویسی دلفی و دیتابیس ها

بدست آوردن ادرس فیزیکی کارت شبکه

uses
NB30;


function GetAdapterInfo(Lana: Char): String;
var
Adapter: TAdapterStatus;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBRESET);
NCB.ncb_lana_num := Lana;
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;

FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := Lana;
NCB.ncb_callname := '*';

FillChar(Adapter, SizeOf(Adapter), 0);
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;
Result :=
IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +
IntToHex(Byte(Adapter.adapter_address[5]), 2);
end;

function GetMACAddress: string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB);
if Byte(AdapterList.length) > 0 then
Result := GetAdapterInfo(AdapterList.lana[0])
else
Result := 'mac not found';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text:='Your MAC Adress = "'+GetMACAddress+'"';
Edit1.SetFocus;
Application.ProcessMessages;
end;

البته اگر از دلفی های جدید استفاده می کنید ب�%
نظرات 1 + ارسال نظر
amin شنبه 30 آذر‌ماه سال 1392 ساعت 23:51

سلام
کد فوق موقع اجرا خطا می ده و
TAdapterStatus
و
TNCB
رو نمی شناسد
آیا در قسمت بالا
uses
بایستی کتابخانه ای رو وارد کنم ؟
ایراد از کجاست
لطفا راهنمای فرمائید

سلام
uses
NB30;
را باید اضافه کنی
البته اگر از دلفی های جدید استفاده می کنی باید یک سری تغییرات کوچیک بدی
مثلا هر جا = با lana بود باید به این شکل تغییر بدی
ansichar(Lana);
وقتی که مربوط به برگرداندن جواب یا همون result است
Result := GetAdapterInfo(char(AdapterList.lana[0]))
به این شکل تغییر بدید

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد