Hallo,<br>
<br>
kann mir jemand sagen, wie ich aus DLL-Dateien die Versionsinformationen auslesen kann. Folgende Funktion funktioniert leider nur für EXE-Dateien.<br>
<br>
// Versionsinformationen aus EXE-Datei auslesen<br>
// Schlüssel: CompanyName, FileDescription, FileVersion, InternalName,<br>
// LegalCopyRight , OriginalFileName, ProductName, ProductVersion<br>
// Aufrufbeispiel: s:= GetVersionInfo(Application.ExeName, 'FileVersion');<br>
function GetVersionInfo(FileName, Key: string): string;<br>
const<br>
vqvFmt = '\StringFileInfo\%4.4x%4.4x\%s';<br>
var<br>
vlen : DWord;<br>
FInfoSize : longint;<br>
FInfo : pointer;<br>
FLang : PInteger;<br>
FLangNum : integer;<br>
vptr : pchar;<br>
begin<br>
Result:= '';<br>
FInfoSize:= GetFileVersionInfoSize(pchar(FileName), vlen);<br>
if FInfoSize > 0 then begin<br>
GetMem(FInfo, FInfoSize);<br>
if GetFileVersionInfo(pchar(FileName), vlen, FInfoSize, FInfo) then begin<br>
VerQueryValue(FInfo, '\VarFileInfo\Translation', pointer(FLang), vlen);<br>
FLangNum:= vlen div 4;<br>
if VerQueryValue(FInfo,<br>
pchar(Format(v qvFmt,[LoWord(FLang^), HiWord(FLang^), Key])),<br>
pointer(vpt r), vlen) then<br>
Result:= vptr;<br>
end;<br>
FreeMem(FInfo, FInfoSize);<br>
end;<br>
end;<br>
<br>
kann mir jemand sagen, wie ich aus DLL-Dateien die Versionsinformationen auslesen kann. Folgende Funktion funktioniert leider nur für EXE-Dateien.<br>
<br>
// Versionsinformationen aus EXE-Datei auslesen<br>
// Schlüssel: CompanyName, FileDescription, FileVersion, InternalName,<br>
// LegalCopyRight , OriginalFileName, ProductName, ProductVersion<br>
// Aufrufbeispiel: s:= GetVersionInfo(Application.ExeName, 'FileVersion');<br>
function GetVersionInfo(FileName, Key: string): string;<br>
const<br>
vqvFmt = '\StringFileInfo\%4.4x%4.4x\%s';<br>
var<br>
vlen : DWord;<br>
FInfoSize : longint;<br>
FInfo : pointer;<br>
FLang : PInteger;<br>
FLangNum : integer;<br>
vptr : pchar;<br>
begin<br>
Result:= '';<br>
FInfoSize:= GetFileVersionInfoSize(pchar(FileName), vlen);<br>
if FInfoSize > 0 then begin<br>
GetMem(FInfo, FInfoSize);<br>
if GetFileVersionInfo(pchar(FileName), vlen, FInfoSize, FInfo) then begin<br>
VerQueryValue(FInfo, '\VarFileInfo\Translation', pointer(FLang), vlen);<br>
FLangNum:= vlen div 4;<br>
if VerQueryValue(FInfo,<br>
pchar(Format(v qvFmt,[LoWord(FLang^), HiWord(FLang^), Key])),<br>
pointer(vpt r), vlen) then<br>
Result:= vptr;<br>
end;<br>
FreeMem(FInfo, FInfoSize);<br>
end;<br>
end;<br>
Comment