垃圾:
有问题,你这个没有处理版本语言,只能读英语(美国)的版本信息,看我这个
[阅读: 602] 2005-03-19 03:48:37
function TfrmMain.getFileVersion(Filename: String): String;
type
TLANGANDCODEPAGE = record
wLanguage,
wCodePage : Word;
end;
PLANGANDCODEPAGE = ^TLANGANDCODEPAGE;
var
S: string;
BufSize, Len: DWORD;
Buf: PChar;
Value: PChar;
Translation: PLANGANDCODEPAGE;
r :String;
InfoPath :String;
begin
r :='';
S := FileName;
BufSize := GetFileVersionInfoSize(PChar(S), BufSize);
if BufSize > 0 then
begin
Buf := AllocMem(BufSize);
GetFileVersionInfo(PChar(S), 0, BufSize, Buf);
if VerQueryValue(Buf, '\VarFileInfo\Translation', Pointer(Translation), BufSize) then
begin
InfoPath :='\StringFileInfo\'+
IntToHex(Translation^.wLanguage,4)+
IntToHex(Translation^.wCodePage,4)+
'\';
end
else
begin
InfoPath :='\StringFileInfo\080403A8\';
end;
if VerQueryValue(Buf, PChar(InfoPath+'FileVersion'), Pointer(Value), Len) then
r := Value;
FreeMem(Buf, BufSize);
end;
Result :=r;
end;