Q&A

  • MAC Address 얻는 방법 좀 갈켜주세여
MAC ADDRESS를 얻는 함수를 만들었는데

프로그램을 실행할때마다 MAC ADDRESS가 자꾸 바뀌네여.

아래 소스를 첨부합니다

고수님들의 조언 부탁드리겠습니다..

조금 급한데여 빨리 답변 부탁드리겠습니다.



{ 이름 : func_GetMACAddr

기능 : 컴퓨터의 MAC Address를 얻는다.

인수 : Adapter의 정수값, PC이름의 문자값

결과값 : MAC Address의 문자값.

}

// 함수를 부를때는 func_GetMACAddr(0, '심한우');

// uses NB30;



function func_GetMACAddr(nAdapterNum : Integer; sHostNm: string): boolean;

var

NCB : TNCB;

adapter : TAdapterStatus;

acMAC : String;

begin

gIPAddr := ''; // 구한 MAC ADDRESS를 사용하기 위한 변수

ncb.ncb_command := char(NCBRESET);

ncb.ncb_lana_num := char(nAdapterNum);

if not (Netbios(@ncb) = char(NRC_GOODRET)) then

result := false;



FillChar(NCB.ncb_callname,SizeOf(NCB.ncb_callname), #0);



ncb.ncb_command := char(NCBASTAT);

ncb.ncb_lana_num := char(nAdapterNum);

StrPCopy(NCB.ncb_callname, sHostNm);



ncb.ncb_buffer := @Adapter;

ncb.ncb_length := SizeOf(Adapter);

if not(Netbios(@ncb) = char(#0)) then begin

FmtStr(acMac, '%2s-%2s-%2s-%2s-%2s-%2s',

[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)]);

gMACAddr := acMac;



result := true;

end

else

result := false;

end;



0  COMMENTS