Monday, November 19th, 2007 | Author: Riza

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.

Tulisan yang mungkin berkaitan dengan tulisan di atas:

  1. Grayscale Bitmap Selector

Category: Delphi
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply » Log in


Verification: