Текущий архив: 2006.04.30;
Скачать: CL | DM;
Вниз
Получение информации о EXE Найти похожие ветки
← →
Nike (2006-02-06 06:59) [0]Здравствуйте! Меня интересует следующий вопрос - как можно получить информацию о версии файла с помощью функции GetFileVersionInfo? Конкретно мне необходимо получить FileDescription на первом из языков, описания на которых хранятся в файле. Если я вызываю
VerQueryValue(pcBuf, PChar("StringFileInfo\040904E4\FileDescription")
то если описание в файле хранится, к примеру, на русском языке, функция ничего не возращает. Как тогда мне получить описание на имеющемся языке? Или хотя бы узнать язык и раскладку, на которых в файле хранятся данные.
← →
kaZaNoVa © (2006-02-06 07:07) [1]может это?
// Получение версии программы/библиотеки вида XX.XX
Function GetFileVersion(Const FileName: String): String;
Type
TFileVersion = Packed Record
Case Integer Of
0: (Ver64: Int64);
1: (VerLS, VerMS: DWORD);
2: (Ver3, Ver2, Ver1, Ver0: Word);
3: (Build, Release, Minor, Major: Word);
End;
Var
VersInfo : Pointer;
VersInfoSize : DWORD;
FileVersion : TFileVersion;
w : DWORD;
FileInfo : PVSFixedFileInfo;
Begin
Result := "";
VersInfoSize := GetFileVersionInfoSize(PChar(FileName), W);
GetMem(VersInfo, VersInfoSize);
Try
If GetFileVersionInfo(PChar(FileName), 0, VersInfoSize, VersInfo) And
VerQueryValue(VersInfo, "\", Pointer(FileInfo), W) Then
Begin
FileVersion.VerMS := FileInfo.dwFileVersionMS;
FileVersion.VerLS := FileInfo.dwFileVersionLS;
Result := Int2Str(FileVersion.Major) + "." + Int2Str(FileVersion.Minor);
End;
Finally
FreeMem(VersInfo);
End;
End;
← →
kaZaNoVa © (2006-02-06 07:09) [2]еще ..
function FileVersion(fname: string): string;
var
siz : Integer;
buf, value: pChar;
hndl : DWORD;
begin
Result := "?.?.?.?";
siz := GetFileVersionInfoSize(PChar(fname), hndl);
if siz > 0 then
begin
buf := AllocMem(siz);
try
GetFileVersionInfo(PChar(fname), 0, siz, buf);
if VerQueryValue(buf, pChar("StringFileInfo\040904E4\FileVersion")
, pointer(value), hndl) then
Result := value
else
if VerQueryValue(buf, pChar("StringFileInfo\040904B0\FileVersion")
, pointer(value), hndl) then
Result := value;
finally
FreeMem(buf);
end;
end;
end;
← →
Nike (2006-02-07 11:17) [3]to kaZaNoVa:
Насчет первого примера - мне надо получить FileDescription, а в записи типа PVSFixedFileInfo такая информация не хранится.
Насчет второго - указание строки "StringFileInfo\040904E4\FileVersion" означает, что из файла будет браться информация только на языке и чарсете, определяемом комбинацией 0x040904E4. Проблема в том, что эта информация может хранится и на другом языке. Мне необходимо узнать, на каком языке хранятся эти данные.
Можно, конечно, перебрать наиболее "популярные" кодировки, но это выглядит чересчур горбато.
← →
begin...end © (2006-02-07 12:13) [4]> Nike (07.02.06 11:17) [3]
> мне надо получить FileDescription, а в записи типа PVSFixedFileInfo
> такая информация не хранится
Хранится: "\FileDescription".
> Мне необходимо узнать, на каком языке хранятся эти данные.
Вызывайте VerQueryValue с параметром "\VarFileInfo\Translation".
> Можно, конечно, перебрать наиболее "популярные" кодировки,
> но это выглядит чересчур горбато.
Пример в MSDN (внизу страницы -- ShowExample):
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Resources/VersionInfor mation/VersionInformationReference/VersionInformationFunctions/VerQueryValue.asp
(если ссылка разорвётся, соедините).
← →
Nike (2006-02-08 07:41) [5]To begin...end:
Спасибо, этот пример, похоже, как раз то что мне и нужно. Кстати, почему в хелпе к Delphi (у меня 7-я) такого примера нету? Может нужна обновленная версия хелпа (MS SDK)???? Или Майкрософт дает Борланду лишь "урезанную версию" хелпа?
← →
begin...end © (2006-02-08 13:25) [6]> Nike (08.02.06 07:41) [5]
> Или Майкрософт дает Борланду лишь "урезанную версию" хелпа?
Конечно. Поэтому лучше пользоваться сайтом www.msdn.com или приобрести свежую offline-версию MSDN.
← →
Nike (2006-02-10 12:58) [7]To begin...end:
И где можно найти "свежую offline-версию MSDN" за приемлемую цену? Учитывая то, что нахожусь я на периферии (поблизости ниодного майкрософтовского офиса). Конечно, желательно бы бесплатно и посвежее..
Страницы: 1 вся ветка
Текущий архив: 2006.04.30;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.008 c