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

Вниз

Как получить значение нестандартную shell информацию о exe шнике?   Найти похожие ветки 

 
Gbp   (2008-05-17 15:35) [0]

Есть нестандартный параметр exe-файла CompiledScript. Как получать такие нестандартные параметры?


 
Сергей М. ©   (2008-05-17 17:00) [1]

Это не "параметр", это GetFileVersionInfo


 
Gbp   (2008-05-17 21:06) [2]

Спасибо за информацию, но как мне получить нестандартный параметр CompiledScript? С помощью структур типа VarFileInfo получить такой параметр невозможно.


 
Gbp   (2008-05-18 12:44) [3]

Параметр ComiledScript расположен на вкладке "Версия".


 
Renegat   (2008-05-18 12:57) [4]

Прога, откуда получаем - твоя? Или нужно это выдернуть из чужой?


 
DVM ©   (2008-05-18 14:49) [5]

Какая разница своя/чужая. Для получения информации о версии и аналогичной прочей лабуды, которой может быть напихано в exe файл сколько угодно в виде параметр=значение служат следующие, как уже сказали. функции:

GetFileVersionInfoSize
GetFileVersionInfo
VerQueryValue


 
Gbp   (2008-05-18 15:10) [6]

Ну про функции эти я знаю. В VerQueryValue вторым параметром нужно передавать строку, в которой указан путь к нужной информации. Собственно вопрос, что нужно передавать в VerQueryValue, чтобы получить такое нестандартное значение.

var
 Size: Cardinal;
 FileHandle: THandle;
 Data: Pointer;
 FileInfo: Pointer;
 InfoLength: Cardinal;
begin
 Size := GetFileVersionInfoSize("С:\sample.exe", FileHandle);
 Data := GetMemory(Size);

 if not GetFileVersionInfo("С:\sample.exe", FileHandle, Size, Data) then
   ShowMessage(IntToStr(GetLastError));

 if not VerQueryValue(Data, "CompiledScript", FileInfo, InfoLength) then // не работает
     ShowMessage(IntToStr(GetLastError));


 
Renegat   (2008-05-18 15:14) [7]

А FileInfo кто инициализировать будет?


 
Renegat   (2008-05-18 15:15) [8]

Извиняюсь, не нужно его инициализировать :(


 
DVM ©   (2008-05-18 17:34) [9]


> Ну про функции эти я знаю.

Не фига ты не знаешь, судя по [6]. Читай справку по ним.


 
Gbp   (2008-05-18 19:40) [10]

2 DVM, офигенный совет, ради таких советов и стоит посещать форумы.

Ладно, вроде разобрался.


type
 LANGANDCODEPAGE = record
   wLanguage: WORD;
   wCodePage: WORD;
 end;  

var
 Size: Cardinal;
 FileHandle: THandle;
 Data: Pointer;
 LanguageCodePage: ^LANGANDCODEPAGE;
 InfoLength: Cardinal;
 FormatString: string;
 Buffer: Pointer;
begin
 Size := GetFileVersionInfoSize("С:\sample.exe", FileHandle);
 Data := GetMemory(Size);

 GetFileVersionInfo("C:\sample.exe", FileHandle, Size, Data);

 VerQueryValue(Data, "\VarFileInfo\Translation", Pointer(LanguageCodePage), InfoLength);

 FormatString := Format("\StringFileInfo\0%x0%x\CompiledScript", [LanguageCodePage.wLanguage, LanguageCodePage.wCodePage]);

 VerQueryValue(Data, PChar(FormatString), Buffer, InfoLength);

 ShowMessage(PChar(Buffer));


 
DVM ©   (2008-05-18 23:25) [11]


> Gbp   (18.05.08 19:40) [10]
> 2 DVM, офигенный совет, ради таких советов и стоит посещать
> форумы.
>
> Ладно, вроде разобрался.

Вот видишь. Сам. Это главное. Я ж вижу сам ты способен в работе функций разобраться, поэтому имен функций вполне достаточно для подсказки.

Если же хочешь подробную подсказку - то посмотри один из модулей RXLib (не помню название) там есть класс-обертка для этих функций.


 
Германн ©   (2008-05-19 01:18) [12]


> Если же хочешь подробную подсказку - то посмотри один из
> модулей RXLib (не помню название) там есть класс-обертка
> для этих функций.
>

TVersionInfo из Rxverinf.pas


 
Gbp   (2008-05-19 14:08) [13]

2DVM. Спасибо, не даете затупеть :)
Всем спасибо за ответы, код работает, вопрос закрыт.



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

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

Наверх





Память: 0.47 MB
Время: 0.005 c
3-1222314069
AE
2008-09-25 07:41
2009.06.14
поврежден файл.db -как восстановить


15-1239027074
kaif
2009-04-06 18:11
2009.06.14
Землетрясение в Италии


2-1240762612
Ramil
2009-04-26 20:16
2009.06.14
Фильтрация подстановочных полей


2-1240845722
Drowsy
2009-04-27 19:22
2009.06.14
Как переименовать таблицу IB?


15-1238762557
JB2
2009-04-03 16:42
2009.06.14
Относятся ли программисты к пролетариату?





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