![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Версия своего приложения [D5, NT4, Win2k, WinXP]
Solden © (2004-08-20 12:37:00)Подскажите, как добраться до информации о версии создаваемого приложения? Или это делается через получение инфы об exe-шнике?
Если да то как?
Заранее благодарен.
Solden (2004-08-20 13:10:00) [1]Спасибо, Семен Сорокин © .
Iconka (2004-08-20 12:39:00) [2]Чуть ниже смотри
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1092904126&n=0&web=1
Семен Сорокин (2004-08-20 12:39:00) [3]
procedure GetVersionAttributes(Name: String; var ACompany, ADescription, AComment: String);
type
PVerLang = ^TVerLang;
TVerLang = packed record
Charset : Word;
LangID : Word;
end;
var
VerInfoSize : DWord;
dummy : DWord;
VerInfo : Pointer;
VSFixed : PVSFixedFileInfo;
VSFixedSize : DWORD;
VTranslation : PVerLang;
VTRSize : DWORD;
LangID : String;
VerKey : String;
VerDesc : PChar;
VerDescSize : DWORD;
VerCompany : PChar;
VerCompanySize : DWORD;
VerComment : PChar;
VerCommentSize : DWORD;
Status : LongBool;
begin
ACompany := '<Not available>';
ADescription := '<Not available>';
AComment := '';
VerInfoSize := GetFileVersionInfoSize(PChar(Name), dummy);
if (VerInfoSize = 0) then
Exit;
GetMem( VerInfo, VerInfoSize );
try
Status := GetFileVersionInfo(PChar(Name), 0, VerInfoSize, VerInfo);
if NOT Status then
Exit;
VerQueryValue( VerInfo, '\', Pointer(VSFixed), VSFixedSize);
VerQueryValue( VerInfo, '\VarFileInfo\Translation', Pointer(VTranslation), VTRSize);
if (VTRSize = 4) then begin
LangID := Format('%.4x%.4x', [VTranslation^.CharSet, VTranslation^.LangID]);
VerKey := '\StringFileInfo\'+LangID+'\FileVersion';//Description';
Status := VerQueryValue (VerInfo,PChar(VerKey), Pointer(VerDesc), VerDescSize);
if (Status) AND (VerDescSize <> 0) then
ADescription := VerDesc;
VerKey := '\StringFileInfo\'+LangID+'\CompanyName';
Status := VerQueryValue (VerInfo,PChar(VerKey), Pointer(VerCompany), VerCompanySize);
if (Status) AND (VerCompanySize <> 0) then
ACompany := VerCompany;
VerKey := '\StringFileInfo\'+LangID+'\Comments';
Status := VerQueryValue (VerInfo,PChar(VerKey), Pointer(VerComment), VerCommentSize);
if (Status) AND (VerCommentSize <> 0) then
AComment := VerComment;
end;
finally
FreeMem(VerInfo, VerInfoSize);
end;
end;