Como ler o Serial do Volume do HD?
É necessário estar declarado Windows e SysUtils na seção uses,
em versões unicode declare Winapi.Windows e System.SysUtils.
Abaixo segue o código fonte da função:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| function GetSerialNum(FDrive:String) :String;
var
Serial : DWord;
DirLen, Flags : DWord;
DLabel : Array[0..11] of Char;
begin
try
Serial := 0;
GetVolumeInformation(PChar(FDrive + ':\'), dLabel, 12, @Serial,
DirLen, Flags, nil, 0);
Result := IntToHex(Serial, 8);
except
Result := '00000000';
end;
end; |
function GetSerialNum(FDrive:String) :String;
var
Serial : DWord;
DirLen, Flags : DWord;
DLabel : Array[0..11] of Char;
begin
try
Serial := 0;
GetVolumeInformation(PChar(FDrive + ':\'), dLabel, 12, @Serial,
DirLen, Flags, nil, 0);
Result := IntToHex(Serial, 8);
except
Result := '00000000';
end;
end;
Exemplos de uso
1
2
3
4
5
6
7
8
9
10
11
| procedure TForm1.Button1Click(Sender: TObject);
begin
// Lendo o serial do volume do Disco C.
ShowMessage(GetSerialNum('C'));
// Lendo o serial do volume do Disco D.
ShowMessage(GetSerialNum('D'));
// Caso não consiga ler a Unidade é retornado zeros
ShowMessage(GetSerialNum('J'));
end; |
procedure TForm1.Button1Click(Sender: TObject);
begin
// Lendo o serial do volume do Disco C.
ShowMessage(GetSerialNum('C'));
// Lendo o serial do volume do Disco D.
ShowMessage(GetSerialNum('D'));
// Caso não consiga ler a Unidade é retornado zeros
ShowMessage(GetSerialNum('J'));
end;
-
InfusTec
-
5.573 views
- 1 comentários
- 28 de março de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
Boa tarde, o código funciona bem na maioria dos sistemas operacionais, mas alguns rodando windows 10 só retorna 00000000