Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Внизкак из exe фаила вытащить мета инфо Найти похожие ветки
← →
dracula © (2004-08-03 18:16) [0]как из exe фаила вытащить мета инфо - если она там есть.
← →
Sergey Kaminski © (2004-08-03 18:19) [1]Ее там нет. Если под этим не имеется в виду что-то другое.
← →
Anatoly Podgoretsky © (2004-08-03 18:36) [2]Она там есть, сиотри форматы исполнимых файлов
← →
dracula © (2004-08-03 18:37) [3]Она там есть, потомучто под этим имеется в виду что-то другое.
Как в тотал командере - когда на exe файл наводишь мышку - вылазит окошко с метаинфой, может она и подругому называеться, но надо вот это =)
← →
Sergey Kaminski © (2004-08-03 18:37) [4]Anatoly Podgoretsky © (03.08.04 18:36) [2]
Воспользуюсь советом.
← →
dracula © (2004-08-03 18:39) [5]а как вытащить?
← →
Sergey Kaminski © (2004-08-03 18:39) [6]может быть имеется в виду VersionInfo?
← →
dracula © (2004-08-03 18:41) [7]да если мы об одном говорим то Versioninfo.
← →
Sergey Kaminski © (2004-08-03 18:43) [8]См. описание ресурса VERSIONINFO в Win32.hlp :)
← →
dracula © (2004-08-03 18:47) [9]я бы посмотрел, а это где? (глупый вопрос, но я незнаю на него ответ). А так на примере показать никак?
← →
Sergey Kaminski © (2004-08-03 18:48) [10]И функция VerQueryValue да поможет тебе! :-)
← →
Sergey Kaminski © (2004-08-03 18:49) [11]Сейчас напишу пример, вышлю.
← →
dracula © (2004-08-03 18:49) [12]Я бы хотел надеяться что поможет =). тока незнаю как 8)
← →
Sergey Kaminski © (2004-08-03 19:55) [13]Обещанный код. Немного грязноват, но написан на колене.
type
TFileDescr = array [0..255] of Char;
PFileDescr = ^TFileDescr;
var
InfoSize: DWORD;
Dummy: Cardinal;
FileName: string;
Buff,LangBuff: PChar;
PInfo: PFileDescr;
InfoLen,LangLen: Cardinal;
LangLocale: string;
begin
FileName := "C:\Program Files\Windows Media Player\wmplayer.exe";
// определяем размер структуры
InfoSize := GetFileVersionInfoSize(
PChar(FileName),
Dummy
);
if InfoSize <> 0 then
begin
// выделяем память для структуры
GetMem (Buff,InfoSize);
// читаем весь ресурс в память
GetFileVersionInfo(
PChar(FileName),
0,
InfoSize,
Buff
);
// определяем локаль строковых значений ресурса
VerQueryValue(Buff, "\VarFileInfo\Translation", pointer(LangBuff), LangLen);
if langLen >= 4 then
begin
{
чтобы сделать более наглядно,
можно создать record для LangBuff,
но можно и так :)
}
StrLCopy(@Dummy, LangBuff, 2);
LangLocale:= Format("%4.4x", [Dummy]);
StrLCopy(@Dummy, LangBuff+2, 2);
LangLocale := LangLocale + Format("%4.4x", [Dummy]);
// Format используем для преобразования к 16-ричному виду,
// по 4 цифры на число
end
else
// если локаль не прописана явно, берем Амер. Англ., ANSI
LangLocale := "040904E4";
// читаем строку FileDescription из ресурса
// для списка всех допустимых строк см. VerQueryValue
// в MSDN
// напр: CompanyName FileDescription FileVersion
// InternalName LegalCopyright OriginalFilename ProductName
// ProductVersion
if VerQueryValue(
Buff,
PChar("\StringFileInfo\" + LangLocale + "\FileDescription"),
Pointer(PInfo),
InfoLen
) then
begin
ShowMessage (PInfo^);// да будет нам счастье! :)
end;
// освобождаем буфер ресурса
FreeMem (Buff,InfoSize);
end;
end;
← →
Sergey Kaminski © (2004-08-03 19:57) [14]Как понятно из кода, читает FileDescription из exe.
Можно сделать покрасивее, определив заранее "нормальные" типы данных.
← →
dracula © (2004-08-03 22:55) [15]Спасибо то что нужно =)
← →
Sergey Kaminski © (2004-08-03 23:06) [16]Я так и знал =))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c