1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
Function GetFileVersion(const FileName: string):String;
const
VersionInfo: array [1..8] of string
= ('FileDescription', 'CompanyName' , 'FileVersion',
'InternalName' , 'LegalCopyRight', 'OriginalFileName',
'ProductName' , 'ProductVersion');
var
Handle : DWord;
Info : Pointer;
InfoData : Pointer;
InfoSize : LongInt;
DataLen : UInt;
LangPtr : Pointer;
InfoType : string;
begin
{ Demande de la taille nécessaire pour stocker les infos de Version}
InfoSize:=GetFileVersionInfoSize(PChar(FileName), Handle);
if (InfoSize > 0) then
begin
{ Réservation de la mémoire nécessaire}
GetMem(Info, InfoSize);
try
if GetFileVersionInfo(PChar(FileName), Handle, InfoSize, Info) then
begin
InfoType := VersionInfo[3];
if VerQueryValue(Info,'\VarFileInfo\Translation',LangPtr, DataLen) then
InfoType:=Format('\StringFileInfo\%0.4x%0.4x\%s'#0,[LoWord(LongInt(LangPtr^)),
HiWord(LongInt(LangPtr^)), InfoType]);
if VerQueryValue(Info,@InfoType[1],InfoData,Datalen) then
Result := strPas(InfoData);
end;
finally
FreeMem(Info, InfoSize);
end;
end;
end;
Function GetAcrobatReaderVersion : Integer;
Var
Reg : TRegistry;
CLSID,Path_Reader : String;
ListVer : TStringList;
Begin
ListVer := TStringList.Create;
Result := 0;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
If Reg.OpenKeyReadOnly('SOFTWARE\Adobe\Acrobat Reader') then
begin
Reg.GetKeyNames(ListVer);
Reg.CloseKey;
If Reg.OpenKeyReadOnly('SOFTWARE\Adobe\Acrobat Reader\'+ListVer[ListVer.count-1]+'\Installer') then
Path_Reader := Reg.ReadString('Path')+'\Reader\AcroRd32.exe' ;
If FileExists(Path_Reader) then begin
Try
Result := StrToInt(GetFileVersion(Path_Reader)[1]) ;
Except
ShowMessage(Format('Une erreur vient de se produire lors de la lecture de la version du fichier %s',[Path_Reader]));
end;
end else
ShowMessage(Format('Le fichier %s n''existe pas',[Path_Reader]))
end else
ShowMessage('Adobe Acrobat Reader n''est pas installé sur cette machine');
Reg.Free;
ListVer.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('La version d''Acrobat Reader est la '+Inttostr(GetAcrobatReaderVersion));
end; |
Partager