Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener direccion MAC de mi PC (https://www.clubdelphi.com/foros/showthread.php?t=22373)

artemisa 13-06-2005 23:16:48

Obtener direccion MAC de mi PC
 
Hola amigos, que comando utilizo para obetener la direccion MAC de la tarjeta de red de mi equipo, hay alguna funcion o algun modo de obtener esta direccion, gracias por su repuesta.:rolleyes:

MrDominoTk 14-06-2005 15:01:53

Este es un fragmento de un programita que uso no es mio lo encontre en la WEB...

lb_mac es el label donde queda la MAC

procedure TForm1.button1click(Sender: TObject);
Type
// Una estructura que une el estado del adaptador
// con una matriz de estructuras TNameBuffer
ASTAT = record
adapt: TAdapterStatus;
NameBuff: Array[0..29] Of TNameBuffer;
end;
Var
Adaptador: ASTAT;
Ncb: TNCB;
Nombre: String;
DatosSocket: WSAData;
BloqueIP: PHostEnt;
DirIP: in_addr;
begin
With Ncb Do // Inicializamos la estructura para ejecutar
Begin // el comando NCBSTAT
ncb_command := char(NCBASTAT);
ncb_lana_num := char(0); // asumimos que sólo hay un adaptador
ncb_callname := '*'; // y no facilitamos nombre
ncb_buffer := @Adaptador; // dirección de la estructura para obtener
ncb_length := sizeof(Adaptador); // los datos devueltos
End;

Netbios(@Ncb); // Llamada a NetBios

// Mostramos los datos
With Adaptador.adapt Do
lb_mac.Caption:= IntToHex(Integer(adapter_address[0]), 2) +
IntToHex(Integer(adapter_address[1]), 2) +
IntToHex(Integer(adapter_address[2]), 2) +
IntToHex(Integer(adapter_address[3]), 2) +
IntToHex(Integer(adapter_address[4]), 2) +
IntToHex(Integer(adapter_address[5]), 2);
End;

artemisa 17-06-2005 22:05:59

He insertado el codigo q me enviaste en un boton, y he declarado el label q indicas, mas no he podido compilar por errores, ¿necesita alguna libreria en espècial?

[Error] Unit1.pas(32): Undeclared identifier: 'TAdapterStatus'
[Error] Unit1.pas(33): Undeclared identifier: 'TNameBuffer'
[Error] Unit1.pas(37): Undeclared identifier: 'TNCB'

Estos son algunos de los errores que obtengo, muchas gracias por tu respuesta, :p

saludos
artemisa

delphi.com.ar 17-06-2005 22:11:42

Tienes que utilizar la unit NB30

Saludos!

artemisa 01-08-2005 22:53:13

que pasa si tengo mas de una tarjeta de red???

delphi.com.ar 01-08-2005 22:59:22

Cita:

Empezado por artemisa
que pasa si tengo mas de una tarjeta de red???

Según el código de MrDominoTk:
Código Delphi [-]
 ...
 ncb_lana_num := char(0); // asumimos que sólo hay un adaptador
 ...
ncb_lana_num indica el número de dispositivo. Podrías iterar mientras "Netbios(NCB) in [NRC_GOODRET, NRC_INCOMP]"

Saludos!

artemisa 01-08-2005 23:20:58

aun tengo estas 3 lineas de mensajes de eror

[Error] Unit1.pas(39): Undeclared identifier: 'WSAData'
[Error] Unit1.pas(40): Undeclared identifier: 'PHostEnt'
[Error] Unit1.pas(41): Undeclared identifier: 'in_addr'
gracias por la respuesta;)

Descendents 02-08-2005 09:45:21

uses winsock

rastafarey 02-08-2005 20:09:39

Resp
 
Bajate la base del conocimiento de delphi Es un programa parecido a trucomania.

Hay tienes varias forma de octnerlas y te encontraras respuestas a muchas cosas que parecen imposible.

La direccion no la recuerdo asi que a buscar.

friendspark 17-11-2005 16:28:57

Por que me sale en la mac cuando la imprimo en pantalla (00-00-00-00-00-00) cuano no es esta? que va mal?;

delphi.com.ar 21-11-2005 13:13:35

Cita:

Empezado por friendspark
Por que me sale en la mac cuando la imprimo en pantalla (00-00-00-00-00-00) cuano no es esta? que va mal?;

¿Tienes tu PC conectada a la red o tienes creado un loopback?... ¿Estas apuntando al dispositivo correcto?

migvaz5 07-10-2010 18:31:28

Obtencion Mac
 
Miren encontre un link donde esxplica como obtener la direccion mac
espero les sirva

Aclaro
Lo encontre en una pagina de internet.
Pascal and Delphi Code Snippet
  1. uses NB30;
  2. function GetAdapterInfo(Lana: Char): String;
  3. var
  4. Adapter: TAdapterStatus;
  5. NCB: TNCB;
  6. begin
  7. FillChar(NCB, SizeOf(NCB), 0);
  8. NCB.ncb_command := Char(NCBRESET);
  9. NCB.ncb_lana_num := Lana;
  10. if Netbios(@NCB) <> Char(NRC_GOODRET) then
  11. begin
  12. Result := 'mac not found';
  13. Exit;
  14. end;
  15. FillChar(NCB, SizeOf(NCB), 0);
  16. NCB.ncb_command := Char(NCBASTAT);
  17. NCB.ncb_lana_num := Lana;
  18. NCB.ncb_callname := '*';
  19. FillChar(Adapter, SizeOf(Adapter), 0);
  20. NCB.ncb_buffer := @Adapter;
  21. NCB.ncb_length := SizeOf(Adapter);
  22. if Netbios(@NCB) <> Char(NRC_GOODRET) then
  23. begin
  24. Result := 'mac not found';
  25. Exit;
  26. end;
  27. Result :=
  28. IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +
  29. IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +
  30. IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +
  31. IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +
  32. IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +
  33. IntToHex(Byte(Adapter.adapter_address[5]), 2);
  34. end;
  35. function GetMACAddress: string;
  36. var
  37. AdapterList: TLanaEnum;
  38. NCB: TNCB;
  39. begin
  40. FillChar(NCB, SizeOf(NCB), 0);
  41. NCB.ncb_command := Char(NCBENUM);
  42. NCB.ncb_buffer := @AdapterList;
  43. NCB.ncb_length := SizeOf(AdapterList);
  44. Netbios(@NCB);
  45. if Byte(AdapterList.length) > 0 then
  46. Result := GetAdapterInfo(AdapterList.lana[0])
  47. else
  48. Result := 'mac not found';
  49. end;
  50. // usage
  51. procedure TForm1.Button1Click(Sender: TObject);
  52. begin
  53. ShowMessage(GetMACAddress);
  54. end;


La franja horaria es GMT +2. Ahora son las 20:04:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi