Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

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

 
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 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-1109581838
Vasek
2005-02-28 12:10
2005.03.13
Координаты выделенной ячейки в DBGridEh


1-1109661324
BillyJeans
2005-03-01 10:15
2005.03.13
Добавление пункта в контекстное меню системы


1-1109673626
АМБ
2005-03-01 13:40
2005.03.13
Округление чисел в Delphi


4-1107241039
VsInLg
2005-02-01 09:57
2005.03.13
Директивы


1-1109580630
akvilon
2005-02-28 11:50
2005.03.13
TDBLookupComboBox и Filter