Главная страница
    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.48 MB
Время: 0.005 c
4-1210937602
_Z_
2008-05-16 15:33
2009.06.14
Сохранить пароль в защищенное хранилище


15-1239089792
Немо
2009-04-07 11:36
2009.06.14
Как вытащить проводки из сетевого кабеля? (витая пара)


15-1239309026
Юрий
2009-04-10 00:30
2009.06.14
С Днём рождения ! 10 апреля 2009 пятница


2-1240844649
Igor2010
2009-04-27 19:04
2009.06.14
Помогите плиз с TWebBrowser


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