
Recentemente procurando um trecho de código em Delphi para uma implementação em um dos poucos programas que ainda sou responsável, encontrei um código que escrevi há algum tempo atrás que me foi muito útil em uma ocasião onde precisava validar a instalação da aplicação mediante uma licença vinculada ao número de série do HD do PC instalado.
Além desta função, ainda encontrei outras tantas procedures e functions que escrevi e mantenho ainda em meus arquivos de código e pretendo disponibilizar esses códigos numa série específica de códigos em Pascal, para os que ainda desenvolvem em Delphi e passam talvez pela mesma necessidade que eu já passei algum dia.
Sei que talvez hoje poucas pessoas ainda estejam programando aplicativos para Desktop, Win32. Também acredito que o número de desenvolvedores que usam Delphi ainda, é bem menor que alguns anos atrás, mas também acredito que alguém ainda algum dia possa precisar, então ai vai o primeiro código, a que se refere à identificar o número de série de um HD.
Testei o código na versão 7 do Delphi em um PC com Windows XP SP3 e funcionou corretamente, ok?
function GetSerialNumberFromHD(const SourceDrive: String): String; var SerialNumber, DirLenght, Marks: DWord; DriveLabel: Array[0..11] of Char; stringDrive: String; charDrive: Char; begin Result := 'Error'; if (length(SourceDrive) = 0) then Exit; stringDrive := SourceDrive[1]; charDrive := stringDrive[1]; if (charDrive in ['A'..'Z','a'..'z'] = false) then Exit; try GetVolumeInformation(PChar(charDrive+':\'), DriveLabel, 12, @SerialNumber, DirLenght, Marks, nil, 0); Result := IntToHex(SerialNumber,8); except Result := 'Error'; end; end;
Para testar é simples:
Comece uma nova aplicação, acrescente um componente Button ao seu Form, e coloque o seguinte código no evento OnClick:
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(GetSerialNumberFromHD('c:'));
end;
Espero ter ajudado! :)
1 comentários:
Perfeito kr... ajudou pra caramba... vlw.
Postar um comentário