Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Obtener la MAC de la tarjeta de red del equipo - Delphi
Lenguaje de programación Borland Delphi



Abajo mostramos el listado del código fuente necesario para obtener la MAC de la tarjeta de red (única para cada tarjeta). Para ello necesitaremos un formulario, un botón y un Label:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses NB30; 

function GetMACAdress: string; 
var 
  NCB: PNCB; 
  Adapter: PAdapterStatus; 

  URetCode: PChar; 
  RetCode: char; 
  I: integer; 
  Lenum: PlanaEnum; 
  _SystemID: string; 
  TMPSTR: string; 
begin 
  Result    := ''; 
  _SystemID := ''; 
  Getmem(NCB, SizeOf(TNCB)); 
  Fillchar(NCB^, SizeOf(TNCB), 0); 

  Getmem(Lenum, SizeOf(TLanaEnum)); 
  Fillchar(Lenum^, SizeOf(TLanaEnum), 0); 

  Getmem(Adapter, SizeOf(TAdapterStatus)); 
  Fillchar(Adapter^, SizeOf(TAdapterStatus), 0); 

  Lenum.Length    := chr(0); 
  NCB.ncb_command := chr(NCBENUM); 
  NCB.ncb_buffer  := Pointer(Lenum); 
  NCB.ncb_length  := SizeOf(Lenum); 
  RetCode         := Netbios(NCB); 

  i := 0; 
  repeat 
    Fillchar(NCB^, SizeOf(TNCB), 0); 
    Ncb.ncb_command  := chr(NCBRESET); 
    Ncb.ncb_lana_num := lenum.lana[I]; 
    RetCode          := Netbios(Ncb); 

    Fillchar(NCB^, SizeOf(TNCB), 0); 
    Ncb.ncb_command  := chr(NCBASTAT); 
    Ncb.ncb_lana_num := lenum.lana[I]; 
    // Must be 16 
    Ncb.ncb_callname := '*               '; 

    Ncb.ncb_buffer := Pointer(Adapter); 

    Ncb.ncb_length := SizeOf(TAdapterStatus); 
    RetCode        := Netbios(Ncb); 
    //---- calc _systemId from mac-address[2-5] XOR mac-address[1]... 
    if (RetCode = chr(0)) or (RetCode = chr(6)) then 
    begin 
      _SystemId := 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); 
    end; 
    Inc(i); 
  until (I >= Ord(Lenum.Length)) or (_SystemID <> '00-00-00-00-00-00'); 
  FreeMem(NCB); 
  FreeMem(Adapter); 
  FreeMem(Lenum); 
  GetMacAdress := _SystemID; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  label1.Caption := GetMACAdress; 
end;


end.




Publicado el: 2003-12-11

Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+