A CODER 0930-ban irta :
>Lehet, hogy a kerdesemre a valasz arcpiritoan egyszeru lesz, de en akkor
>sem talaltam ra megoldast: egy EXE-nek szeretnem futasidoben lekerdezni
>sajat maga szamara a teljes verzioszamat -
>[major].[minor].[release].[build] - es ertelemszeruen egy valtozoba
>elmenteni. (Sajnos sem a C++B helpben, sem az MS-SDK-ban nem talaltam ra a
>megoldasra, pedig biztos ott van...)
Bizony ott kell annak lennie, bar a fenti fejlesztoeszkozt nem ismerem
kozelebbrol.
Szal a GetFileVersionInfo kornyeken nezz korul vmi API help-ben.
Udv,
-banjo-
|
>Lehet, hogy a kerdesemre a valasz arcpiritoan egyszeru lesz, de en akkor
>sem talaltam ra megoldast: egy EXE-nek szeretnem futasidoben lekerdezni
>sajat maga szamara a teljes verzioszamat -
>[major].[minor].[release].[build] - es ertelemszeruen egy valtozoba
>elmenteni. (Sajnos sem a C++B helpben, sem az MS-SDK-ban nem talaltam ra a
>megoldasra, pedig biztos ott van...)
Ime egy lehetseges megoldas:
(a kod Delphi, de tudomasom szerint a BCB ezt is forditja)
-----Original Message-----
From: Andras Potoczky >
>[...]
>Itt a versio information reading code:
>
>procedure TFrmLog.FormCreate(Sender: TObject);
>var
> Size,
> Size2 :DWord;
> Pt,
> Pt2 :Pointer;
>begin
> Size := GetFileVersionInfoSize(PChar(ParamStr(0)), Size2);
> if Size > 0 then
> begin
> GetMem(Pt, Size);
> try
> GetFileVersionInfo(PChar(ParamStr(0)), 0, Size, Pt);
> VerQueryValue(Pt, '\', Pt2, Size2);
> with TVSFixedFileInfo (Pt2^) do
> begin
> {'Major version number: '+IntToStr(HiWord(dwFileVersionMS));
> 'Minor version number: '+IntToStr(LoWord(dwFileVersionMS));
> 'Release version number: '+IntToStr(HiWord(dwFileVersionLS));
> 'Build version number: '+IntToStr(LoWord(dwFileVersionLS));}
>
> StatusBar1.Panels.Items[1].Text :=
>IntToStr(HiWord(dwFileVersionMS))+'.'
>
>+IntToStr(LoWord(dwFileVersionMS));
> StatusBar1.Panels.Items[2].Text := 'Build
>'+IntToStr(LoWord(dwFileVersionLS));
>
> { if (dwFileFlagsMask and dwFileFlags and VS_FF_DEBUG) <> 0 then
>
> Label6.Caption := 'Debug info included';
> if (dwFileFlagsMask and dwFileFlags and VS_FF_PRERELEASE) <> 0
>then
> Label7.Caption := 'Pre-release (beta) version';
> if (dwFileFlagsMask and dwFileFlags and VS_FF_PRIVATEBUILD) <>
>0 then
> Label8.Caption := 'Private Build';
> if (dwFileFlagsMask and dwFileFlags and VS_FF_SPECIALBUILD) <>
>0 then
> Label9.Caption := 'Special Edition';}
> end;
> {VerQueryValue(Pt, '\StringFileInfo\040904E4\FileDescription',
>Pt2, Size2);
> Label10.Caption := 'File Description: ' + PChar(Pt2);
> VerQueryValue(Pt, '\StringFileInfo\040904E4\FileVersion', Pt2,
>Size2);
> Label11.Caption := 'File Version: ' + PChar(pt2);
> VerQueryValue(Pt, '\StringFileInfo\040904E4\InternalName', Pt2,
>Size2);
> Label12.Caption := 'Internal Name: ' + PChar(pt2);
> VerQueryValue(Pt, '\StringFileInfo\040904E4\LegalCopyright', Pt2,
>Size2);
> Label13.Caption := 'Legal Copyright: ' + PChar(pt2);
> VerQueryValue(Pt, '\StringFileInfo\040904E4\ProductVersion', Pt2,
>Size2);
> Label15.Caption := 'Product Version: ' + PChar(pt2);}
> finally
> FreeMem(Pt);
> end;
> end;
>end;
Gabor
|