Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Serial del disco duro (https://www.clubdelphi.com/foros/showthread.php?t=32846)

Emerson 18-06-2006 02:59:34

Serial del disco duro
 
Estoy trabajando en delphi y necesito saber si existe alguna posiblidad de verificar el codigo serial del disco duro.. Gracias.... a todos

Sotrono 18-06-2006 05:36:45

Hola, antes te recomiendo que leas la guia de estilo. Este foro no es el mas adecuado para este hilo.

Chequea esto:

Código Delphi [-]
//Truco 46 de Trucomania
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;

Ejemplo de llamada:

Código Delphi [-]
  ShowMessage(GetVolumeId('c'));

Igualmente, si utilizas el buscador vas a encontrar varios hilos en los que ya se respondio esto, en ésta misma página (abajo de todo) hay links a hilos similares.

Saludos y bienvenido a Club Delphi!!

Mick 18-06-2006 12:10:04

Solo comentar que esa funcion devuelve el identificador de una particion, no del disco, de modo que si la particion se formatea el numero de serie cambia aunque sea el mismo disco duro. De modo que no sirve para ser utilizado como sistema anticopia.

Saludos

turminator 18-06-2006 23:21:01

Una pregunta, yo veo todo este codigo y me dan ganas de probar como funciona pero cuanto abro mi Delphi 7, creo un form con un boton y le doy la opcion que al cliquear ocurra:
Código PHP:

ShowMessage(GetVolumeId('c')); 

No me muestra la ID del disco duro. Donde debo meter el codigo restante?

Código Delphi [-]
//Truco 46 de Trucomaniafunction 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;

Sotrono 19-06-2006 03:06:12

Cita:

Empezado por turminator
No me muestra la ID del disco duro. Donde debo meter el codigo restante?

En la sección Implementation.

Neftali [Germán.Estévez] 19-06-2006 09:50:28

En la sección de componentes de mi página hay uno llamado TDiskInfo que te permite obtener el número de Serie del disco duro (no el volumen) a parte de mucha otra información.

turminator 19-06-2006 13:09:11

Cita:

Empezado por Sotrono
En la sección Implementation.

Muchas gracias Sotrono. Algo tan básico como esto, no sabia como funcionaba. A partir de ahora puedo ir viendo todos los ejemplos de codigos y probarlos para aprender. Muchas gracias.

PD: La sección de trucos que hay, tambien debo introducir el codigo en la sección IMPLEMENTATION?

Gracias

Sotrono 19-06-2006 17:29:18

Cita:

Empezado por turminator
La sección de trucos que hay, tambien debo introducir el codigo en la sección IMPLEMENTATION?

La implementación de la función (el código mismo) va en la sección Implementation, pero a veces tambien hay que declararla (solo el encabezado), por ejemplo, en la sección Private o Public de la unidad del Form.
Chequea este hilo.

German 08-07-2006 08:24:40

Cita:

Empezado por Neftali
En la sección de componentes de mi página hay uno llamado TDiskInfo que te permite obtener el número de Serie del disco duro (no el volumen) a parte de mucha otra información.

Un pequeño apunte sobre la demo incluida en el componente: El gráfico muestra al revés el espacio ocupado y libre.

Y otro sobre el componente (pequeño también): Solo comentar que, para obtener la propiedad "SerialNumber", es necesario incluir una librería de la carpeta DEMO en la misma carpeta que el ejecutable que use el componente. Además, se debe añadir "ShareMem" en la cláusula "uses" del form que utilice el componente, o en la "uses" del proyecto, si es que van a utilizarlo varios forms. Si no se incluye, lanza una excepción de lectura de memoria (BDS 2006). Esta información no aparece en la ayuda (o al menos no la he visto).

Salu2.

Neftali [Germán.Estévez] 10-07-2006 09:47:35

Cita:

Empezado por German
(1) El gráfico muestra al revés el espacio ocupado y libre.
(2) Y otro sobre el componente (pequeño también): Solo comentar que, para obtener la propiedad "SerialNumber", es necesario incluir una librería de la carpeta DEMO en la misma carpeta que el ejecutable que use el componente. Además, se debe añadir "ShareMem" en la cláusula "uses"

Gracias por ambos comentarios; Corregiré la demo y añadiré lo que comentas al fchero de documentación.

German 12-07-2006 07:44:30

Un comentario mas... :rolleyes:

Al utilizar "ShareMem" también es necesario incluir la librería "borlndmm.dll" en la carpeta del ejecutable, a no ser que el PC tenga instalado Delphi, en cuyo caso no es necesario, ya que esta librería está incluida en la carpeta "Bin", y está registrada en Windows.

¿No seria mas fácil incluir la función que devuelve el número de serie del HD en un dcu...? (tan solo es una reflexión).

Salu2.


La franja horaria es GMT +2. Ahora son las 07:04:01.

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