![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Como puedo obtener los siguientes datos?
Hola a todos muchas gracias de antemano.
No sabia donde incluir este hilo y por eso lo he colocado aqui, si este sitio no es el adecuado por favor hacedmelo saber. Gracias Tengo un problema y es que necesito generar un ficherito de texto donde este incluida la siguiente informacion: - Nº de serie de la tarjeta grafica - Nº de serie de la placa base - La MAC address de la tarjeta de red. - Nº de serie y modelo del disco duro. La verdad es que no tengo ni idea de como hacerlo y es urgente que consiga crear ese fichero de texto con esta información por eso si alguien pudiera ayudarme le estaria muy agradecido. Sin mas muchas gracias por vuestra ayuda y colaboracion. Un saludo |
|
#2
|
||||
|
||||
|
Supongo que todo lo que pides lo puedes encontrar en el registro de windows, aqui te pongo un ejemplo de como acceder a él:
Código:
procedure TForm1.Button6Click(Sender: TObject);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_Local_Machine;
Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\',False);
ShowMessage (Reg.ReadString('ProductID'));
finally
Reg.Free;
end;
end;
Código:
procedure TForm1.Button15Click(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
ShowMessage('La dirección MAC es: ' +
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));
WSAStartup($0101, DatosSocket); // Inicializamos Windows sockets
SetLength(Nombre, MAX_PATH); // y obtenemos el nombre de nuestro equipo
gethostname(PChar(Nombre), MAX_PATH);
// que usamos para obtener un bloque de información sobre IP
BloqueIP := gethostbyname(PChar(Nombre));
// del cual recuperamos la dirección
CopyMemory(@DirIP, (BloqueIP^).h_addr_list^, BloqueIP.h_length);
ShowMessage(inet_ntoa(DirIP)); // y la mostramos
end;
Espero haberte servido de ayuda, Saludos, Tony |
|
#3
|
|||
|
|||
|
gracias por responder
gracias por responder pero los numeros que necesito no se encuentran en el registro de windows.
Muchas gracias por la funcion para la MAC me ha servido muchisimo. Me gustria saber como conseguir los numeros de serie hardware que da el fabricante a cada dispositivo en concreto el de la placa base y el de la de video. La verdad es que necesito vouestra ayuda porque estoy muy perdido y es un trabajo urgente. Estoy buscando cosas pero no doy con nada concreto. Muchisimas gracias por vuestro interes Un saludo |
|
#4
|
|||
|
|||
|
Hola aqui tienes para averiguar el numero de serie del disco duro, ya te queda menos jejeje.Salu2.CRIS.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; SpeedButton1: TSpeedButton; Edit1: TEdit; procedure SpeedButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation function GetVolumeID(DriveChar: Char): String; var MaxFileNameLength, VolFlags, SerNum: DWord; begin if GetVolumeInformation(PChar(DriveChar + ':\'), nil, 0, @SerNum, MaxFileNameLength, VolFlags, nil, 0) then begin Result := IntToHex(SerNum,8); Insert('-', Result, 5); end else Result := ''; end; {$R *.dfm} procedure TForm1.SpeedButton1Click(Sender: TObject); begin Label1.Caption:=GetVolumeId('c'); end; end. y de esta forma te dara los datos del disco duro en decimal: ------------------------------------------------ unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; SpeedButton1: TSpeedButton; Edit1: TEdit; procedure SpeedButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation function GetVolumeID(DriveChar: Char): String; var MaxFileNameLength, VolFlags, SerNum: DWord; begin if GetVolumeInformation(PChar(DriveChar + ':/'), nil, 0, @SerNum, MaxFileNameLength, VolFlags, nil, 0) then begin Result := IntToStr(SerNum); end else Result := ''; end; {$R *.dfm} procedure TForm1.SpeedButton1Click(Sender: TObject); begin Label1.Caption:=GetVolumeId('c'); end; end. |
|
#5
|
|||
|
|||
|
Muchas gracias por vuestra ayuda, ya he conseguido la MAC tambien, lo unico que me queda es el serial de la placa base y me estoy volviendo loco. Estoy utilizando llamadas a WMI pero no obtengo ningun resultado.
Muchas gracias por vuestra colaboracion de verdad. Saludos. |
![]() |
|
|
|