Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.052 c
6-1120190873
NorthMan
2005-07-01 08:07
2005.10.23
Про Indy и синхронизацию потоков


3-1126247175
zorik
2005-09-09 10:26
2005.10.23
Существует ли ф-ция


3-1126604417
Пытающийся
2005-09-13 13:40
2005.10.23
Помогите поднять SQL2000 Server


14-1127988037
Friend
2005-09-29 14:00
2005.10.23
res при помощи brcc32.exe


9-1118343860
Ksander
2005-06-09 23:04
2005.10.23
игра