Текущий архив: 2005.10.23;
Скачать: CL | DM;
ВнизКак узнать подключен ли manifest? Найти похожие ветки
← →
Mixer (2005-10-03 04:04) [0]Как мне средствами Windows API в программе узнать как скомпилирована программа, с манифестом или без?
И в случае если программа использует манифест в виде [exefilename].manifest как проверить что она его юзает?
← →
OldNaum © (2005-10-03 04:21) [1]Не знаю, как средствами WinAPI, особенно если смотреть на первую часть вопроса, но есть пара решений, может пригодятся? щас наверное буду говорить глупости, но вполне реально:
1. если скомпилировано с манифестом - лезем в ресурсы (относительно поиска среди ресурсов смотрим на форуме, недавно ветки были) ищем секцию ресурсов Manifest. Нету - нету и манифеста... возможно )
2. способ извращенский ) только моя больная фантазия могла такое придумать ) берем сурсы дельфийского декомпилятора DeDe. И... узнаем какие модули были подключены при компляции ))) если есть XPMan, то опять же вероятно использовался манифест. правда большинство программеров, как я считаю, не подключают XPMan - причину можно увидеть в его сурсах, там только подключение ресурсов происходит. но вариант имеет право на сущестование как плод моего больного рассудка )
Относительно второй части вопроса сходу ничего даже и не скажу. По-моему если есть [exefilename].manifest, то exe в любом случае будет использовать манифест... Брр... все, спать )
← →
Mixer (2005-10-03 04:54) [2]Если смотреть ресурсэксплорером то манифест в ветке 24/1
и что получается мне искать ресурс с номером 1?
а какого типа этот ресурс не подскажете?
← →
Mixer (2005-10-03 05:01) [3]Наверное точнее будет узнать каую версию comctl использует программа.
Вопрос как это сделать?
← →
OldNaum © (2005-10-03 06:10) [4]мне мой ресурсвьювер говорит что тип: XP Manifest +)
искать ресурс с номер один? нет, такое не прокатит, там таких много )
хм... а каким боком через comctl? поясните, пожалуйста. что вообще под comctl имеется в виду? одна из сист. библиотек?
← →
Opuhshii (2005-10-03 09:50) [5]http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/7fad7146-edaa-4f8c-865f-1fb09080d75e.asp
вам туда....
+
http://www.delphimaster.ru/articles/themes_xp/index.html
← →
y-soft © (2005-10-03 10:20) [6]Очень просто узнать. Надо проверить версию загруженной CommCtl32.dll (должна быть >= 6)
← →
y-soft © (2005-10-03 10:24) [7]
const
COMCTL32_DLL = "comctl32.dll";
DLLGETVERSION_NAME = "DllGetVersion";
MINCOMCTL32_MAJORVERSION = 6;
type
TDllVersionInfo = record
cbSize : DWORD;
dwMajorVersion : DWORD;
dwMinorVersion : DWORD;
dwBuildNumber : DWORD;
dwPlatformID : DWORD;
end;
TDllGetVersion = function(var dvi : TDllVersionInfo) : HResult; stdcall;
function IsThemed : boolean;
var
hMod : HMODULE;
dvi : TDllVersionInfo;
DllGetVersion : TDllGetVersion;
begin
Result := False;
//Если темы используются, то в любом случае
//уже загружена ComCtl32.dll
hMod := GetModuleHandle(COMCTL32_DLL);
if hMod <> 0 then
begin
//ComCtl32.dll должна экспортировать функцию DllGetVersion
DllGetVersion := GetProcAddress(hMod, DLLGETVERSION_NAME);
if assigned(DllGetVersion) then
begin
//Обязательно инициируем запись dvi!!!
dvi.cbSize := SizeOf(dvi);
//Получаем информации о версии загруженной ComCtl32.dll
if SUCCEEDED(DllGetVersion(dvi)) then
begin
//Если используются темы, то версия ComCtl32.dll не менее 6.x.x.x
if (dvi.dwMajorVersion >= MINCOMCTL32_MAJORVERSION) then
Result := True;
end;
end;
end;
end;
Пояснение: Windows не грузит ComCtl32.dll с поддержкой тем, если не находит манифест (в ресурсах или в виде отдельного файла Наименование_приложения.exe.manifest)
Страницы: 1 вся ветка
Текущий архив: 2005.10.23;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.036 c