Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como puedo obtener los siguientes datos? (https://www.clubdelphi.com/foros/showthread.php?t=9732)

prodigios 30-04-2004 12:26:43

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

tcp_ip_es 30-04-2004 13:07:28

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;

te dejo tambien un ejemplo de como conocer la ip y la mac hecho por Francisco Charte:

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;

recuerda poner en las uses la librerías correspondientes, en estos dos casos te valdría con: Registry, Nb30, Winsock

Espero haberte servido de ayuda, Saludos, Tony

prodigios 30-04-2004 16:44:39

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

CRIS 01-05-2004 18:18:22

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.

prodigios 03-05-2004 09:39:03

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.


La franja horaria es GMT +2. Ahora son las 10:08:22.

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