Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-05-2007
hperez hperez is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
hperez Va por buen camino
Como capturar el serial del disco duro en delphi

Alguien me podria ayudar como capturar el serial del disco duro de mi pc con delphi 2006
Responder Con Cita
  #2  
Antiguo 17-05-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
¿Revisaste la sección de trucos?
Responder Con Cita
  #3  
Antiguo 17-05-2007
hperez hperez is offline
Miembro
 
Registrado: may 2007
Posts: 21
Poder: 0
hperez Va por buen camino
Acabo de revisar algunos hilos y esta es la solucion mas practica

Código Delphi [-]
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,20);
    Insert('-', Result, 5);
   // Result := IntToStr(SerNum);---si necesitan el decimal
  end
  else
      Result := '';
 end;
 procedure TFrmLogin.Button1Click(Sender: TObject);
 begin
    ShowMessage(GetVolumeID('C'));
 end;

Última edición por dec fecha: 17-05-2007 a las 01:33:29.
Responder Con Cita
  #4  
Antiguo 17-05-2007
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
¿ese es el de fabrica o el que se crea con cada format?
Responder Con Cita
  #5  
Antiguo 17-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Mmm...

Lastimosamente no recuerdo exactamente el otro, pero ése es el del Boot (generado al formatear)...
Responder Con Cita
  #6  
Antiguo 17-05-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Revisa la sección de componentes de mi página. Hay uno que te permite obtener el número de Serie del Disco Duro (no el número de volumen -que es el que se borra al formatear-); Tengo unas modificaciones pendientes referentes a cuando hay más de una partición, pero funciona bien en el resto de casos. Cuando tenga un poco de tiempo de revisaré...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 21-05-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Yo digo...

Acá les dejo la función que hice el '05 para obtener la serie de un HDD... La adecué un poco para que sea una función independiente pues yo lo uso luego del "InitExe". Es todo lo que se necesita y funciona a la perfección sin DLLs.
Código Delphi [-]
function GetSerial(Drive: Char): ShortString;
const InBuffer: array [0..7] of Cardinal = ($200,$10100,$ECB000,0,0,0,0,0);
var
 hDevice, Dummy: Cardinal;
 IdeInfo: array [0..$83] of Cardinal;
begin
 Result[0] := #0;
 hDevice := CreateFile(PChar('\\.\' + Drive + ':'), GENERIC_READ + GENERIC_WRITE, FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
 if hDevice <> INVALID_HANDLE_VALUE then
  begin
   DeviceIoControl(hDevice, $7C088, @InBuffer, SizeOf(InBuffer), @IdeInfo, SizeOf(IdeInfo), Dummy, nil);
   CloseHandle(hDevice);
   Result[0] := #20;
   Move(IdeInfo[9], Result[1], Byte(Result[0]));
  end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 Caption := '"'+GetSerial(ComboBox1.Text[1])+'"'; // 'a..z'
end;

La función no es aplicable en 9x, puesto que para ésos fines se debiese acceder a los puertos que manejan los buses (1F0h, 170h, 1E8h y 168h).
Personalmente mis aplicaciones solo corren en NT, lo decidí firmemente cuando me enteré que Microsoft ya no daba soporte a ésos SOs.

PD: Disculpen el retraso pero andaba "programando"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
obtener el número de serie de un disco duro serial ATA mgc API de Windows 4 27-03-2009 15:54:18
Serial del disco duro Emerson API de Windows 10 12-07-2006 07:44:30
Como leer el serial del Disco duro? JuanErasmo C++ Builder 1 30-09-2005 06:34:35
Lectura del serial de un disco duro. mlara Windows 4 22-12-2004 17:11:11
Leer Serial del Disco Duro MaxPc API de Windows 1 18-06-2004 22:30:22


La franja horaria es GMT +2. Ahora son las 09:12:35.


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
Copyright 1996-2007 Club Delphi