Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Вниз

Извлечении такстовой версии из файла   Найти похожие ветки 

 
Woolen   (2002-10-24 12:42) [0]

Здравствуйте, помогите, пожалуйста извлечь версию из файла. Не могу разобраться. Нужно получить версию продукта в текстовом виде. Я знаю, что она там есть. Однако в WinAPI, по крайней мере в документации, которая поставляется с Delphi, этого нет. Есть только числовой вариант в структуре VS_FIXEDFILEINFO. Его извлечь, видимо, можно. А где текстовый, который записывается в полях Delphi в опциях проекта? Напишите там любую комбинацию цифр и точек с любым количеством нулей и Delphi все передаст в тексте до последнего нолика. А вот как достать? Помогите все, кто знает.


 
Игорь Шевченко   (2002-10-24 12:50) [1]

procedure TfrmMain.GetVersionAttributes(Name: String; var ACompany,
ADescription, AComment: String);

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+"\FileDescription";
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;



Как пример...


 
Woolen   (2002-10-24 14:56) [2]

Спасибо, надеюсь, что это мне поможет.


 
Woolen   (2002-10-24 16:03) [3]

Никак не могу понять, что за тип такой PVerLang и как он устроен. Я так понял, это указатель на структуру. А на какую?


 
Игорь Шевченко   (2002-10-24 17:37) [4]

Прошу прощения, забыл:

type
PVerLang = ^TVerLang;
TVerLang = packed record
Charset : Word;
LangID : Word;
end;

С уважением,


 
Woolen   (2002-10-24 18:19) [5]

Спасибо!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-14576
Comp
2002-11-26 15:41
2002.12.05
OnDrawPanel


1-14667
Freez
2002-11-25 19:06
2002.12.05
DBGrig + TBitmap


14-14757
AL2OO2
2002-11-14 15:49
2002.12.05
Как можно сохранить страницу со всеми ссылками?


4-14880
Dead Stark
2002-10-24 08:48
2002.12.05
Может кто подскажет, как получить имя пользователя?


4-14877
VICTOR_
2002-10-24 22:38
2002.12.05
Хочу словить сообщение от вторичного потока





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский