



É 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; |
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; |
Você precisa fazer o login para publicar um comentário.
Boa tarde, o código funciona bem na maioria dos sistemas operacionais, mas alguns rodando windows 10 só retorna 00000000