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

Вниз

Версия программы   Найти похожие ветки 

 
Strech   (2005-01-27 04:35) [0]

Как определить версию собственной программы? Можно ли выдернуть эту информацию непосредственно из ресурсов? GetFileVersion использует имя файла, а что делать если этого файла нет, а он создается динамически и только в ОЗУ?


 
Poirot ©   (2005-01-27 10:34) [1]

GetFileVersionInfoSize
GetFileVersionInfo
VerQueryValue
Вот этот набор смотри и в нете есть много примеров, можешь и компоненты посмотреть на торри например!


 
Игорь Шевченко ©   (2005-01-27 11:03) [2]


 procedure GetFileVersion(const FileName: string; var Major1, Major2, Minor1,
   Minor2: Integer);
 { Helper function to get the actual file version information }
 var
   Info: Pointer;
   InfoSize: DWORD;
   FileInfo: PVSFixedFileInfo;
   FileInfoSize: DWORD;
   Tmp: DWORD;
 begin
   // Get the size of the FileVersionInformatioin
   InfoSize := GetFileVersionInfoSize(PChar(FileName), Tmp);
   // If InfoSize = 0, then the file may not exist, or
   // it may not have file version information in it.
   if InfoSize = 0 then
     raise Exception.CreateFmt("Can""t get file version information for %s",
       [FileName]);
   // Allocate memory for the file version information
   GetMem(Info, InfoSize);
   try
     // Get the information
     GetFileVersionInfo(PChar(FileName), 0, InfoSize, Info);
     // Query the information for the version
     VerQueryValue(Info, "\", Pointer(FileInfo), FileInfoSize);
     // Now fill in the version information
     Major1 := FileInfo.dwFileVersionMS shr 16;
     Major2 := FileInfo.dwFileVersionMS and $FFFF;
     Minor1 := FileInfo.dwFileVersionLS shr 16;
     Minor2 := FileInfo.dwFileVersionLS and $FFFF;
   finally
     FreeMem(Info, FileInfoSize);
   end;
 end;


 
Strech   (2005-01-27 11:14) [3]

Я же говорю, что файла нет. Где мне FileName взять?


 
Игорь Шевченко ©   (2005-01-27 11:15) [4]


> Я же говорю, что файла нет. Где мне FileName взять


Application.ExeName,
GetModuleFileName(0)
выбор безграничен.


 
Kerk ©   (2005-01-27 11:26) [5]

Игорь Шевченко ©   (27.01.05 11:03) [2]

теги закрывать над о:)


 
Woolen ©   (2005-01-27 14:42) [6]


> GetFileVersion
> использует имя файла, а что делать если этого файла нет,
> а он создается динамически и только в ОЗУ?

И что ты его создаешь в ОЗУ с версией, чтобы ее оттуда потом читать? :-)


 
Просто Джо ©   (2005-01-27 23:56) [7]


>  Strech   (27.01.05 04:35)


Адназначна вырусс.

"Создает себя в ОЗУ" а потом озабоченно интересуется своей версией. Из рэсурсов.


 
Strech   (2005-01-28 03:11) [8]

Есть зашифрованный файл (в нем, кстати и та самая версия есть) со своим загрузчиком. см: http://www.rsdn.ru/article/baseserv/peloader.xml
Поскольку этот файл зашифрован, то версию указанными средствами я определить не могу. При запуске файл расшифровывается в ОЗУ. и Application.ExeName и GetModuleFileName(0) дают фигню полную. Неужели версию непосредственно из ресурсов прочитать нельзя?


 
Poirot ©   (2005-01-28 09:30) [9]

Как я помню лодер для ДЛЛ! Тебе DLL я так понимаю надо?! Дык если ты её грузишь - значит знаешь путь, тогда в чём проблема?!
Если из ресурсов - выгрузи ресурс - TREsourceStream например и парсь его как хочется...


 
Strech   (2005-01-28 10:29) [10]

Нету у меня DLL. Все что у меня есть - это хэндл HMODULE. Соответственно я могу пользоваться FindResourceEx(), LoadResource().


 
Игорь Шевченко ©   (2005-01-28 10:55) [11]

Strech   (28.01.05 10:29) [10]

Так загружай ресурс типа RT_VERSION и вызывай VerQueryValue


 
-SeM-   (2005-01-28 11:37) [12]

2Strech
Стукни в аську 191381203, please ...



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

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

Наверх





Память: 0.47 MB
Время: 0.059 c
6-1104840203
Sergio
2005-01-04 15:03
2005.03.13
Зарубежный трафик


14-1108640990
dr Tr0jan
2005-02-17 14:49
2005.03.13
Ремонт телевизора


3-1107858771
Manfred8
2005-02-08 13:32
2005.03.13
TClientDataSet.Locate не работает с кириллицей?


4-1107122348
kvant
2005-01-31 00:59
2005.03.13
как узнать координаты иконок на рабочем столе?


9-1103448218
Goldseeker
2004-12-19 12:23
2005.03.13
Классы?





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