Форум: "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.029 c