Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.49 MB
Время: 0.04 c
3-1090565839
Katya_mgkit
2004-07-23 10:57
2004.08.15
UDB


14-1091283134
Protoss
2004-07-31 18:12
2004.08.15
Скажите, вы когда нибудь делали программу ...


14-1089840286
lak
2004-07-15 01:24
2004.08.15
ночной дозор - музыка


3-1090310952
Geoji
2004-07-20 12:09
2004.08.15
Дата


3-1090569543
vital
2004-07-23 11:59
2004.08.15
Count and distinct вместе ошибку выдают





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский