Beberapa hari yang lalu aku bikin fungsi untuk mengambil MAC Address dari ethernet card. Fungsinya aku beri nama GetMacAddress(AEthNumber: Byte). Kembalian dari fungsi ini adalah string dari MAC address ethernet card ber-index AEthNumber. Kalau PC hanya mempunyai sebuah ethernet card, AEthNumber bisa diisi dengan 0 (nol). Fungsi GetMacAddress memanfaatkan unit NB30 bawaan delphi yang berisi beberapa record serta fungsi untuk mengambil informasi network device melalui NetBios.
Mumpung inget, tak dokumentasikan di sini. Sekalian share kali aja ada yang perlu. Code-nya seperti di bawah ini.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | uses NB30; function GetMacAddress(AEthNumber: Byte): string; var ncb: PNCB; errorCode: Char; adapter: PAdapterStatus; begin New(ncb); { Inisiasi isi memory pada pointer ncb dengan char 0 }; FillChar(ncb^, SizeOf(TNCB), 0); ncb^.ncb_command := Char(NCBRESET); ncb^.ncb_lana_num := Char(AEthNumber); errorCode := NetBios(ncb); { Reset kembali isi memory pointer nbc dengan char 0 }; FillChar(ncb^, SizeOf(TNCB), 0); ncb^.ncb_command := Char(NCBASTAT); ncb^.ncb_lana_num := Char(AEthNumber); { Harus berisi 16 karakter } StrPCopy(ncb^.ncb_callname, '* '); New(adapter); FillChar(adapter^, SizeOf(TAdapterStatus), 0); ncb^.ncb_buffer := Pointer(adapter); ncb^.ncb_length := SizeOf(TAdapterStatus); errorCode := NetBios(ncb); if (errorCode = Char(NRC_GOODRET)) or (errorCode = Char(NRC_INCOMP)) then Result := IntToHex(Ord(adapter^.adapter_address[0]), 2) + '-' + IntToHex(Ord(adapter^.adapter_address[1]), 2) + '-' + IntToHex(Ord(adapter^.adapter_address[2]), 2) + '-' + IntToHex(Ord(adapter^.adapter_address[3]), 2) + '-' + IntToHex(Ord(adapter^.adapter_address[4]), 2) + '-' + IntToHex(Ord(adapter^.adapter_address[5]), 2) else Result := '00-00-00-00-00-00'; Dispose(ncb); Dispose(adapter); end; |
Begitu saja semoga bermanfaat. Kali aja ada yang mau ikutan nambahin.
