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. |
|
|
|