Главная страница
    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.46 MB
Время: 0.036 c
2-1127208785
Sergey_R
2005-09-20 13:33
2005.10.23
Найти файлы с определенным расширением


8-1116960765
zxv
2005-05-24 22:52
2005.10.23
зигзаг сканирование


4-1124343820
rentgen
2005-08-18 09:43
2005.10.23
Как можно изменить дату создания файла?


2-1127915344
Igor_thief
2005-09-28 17:49
2005.10.23
Tnotebook


14-1128082751
Digitman
2005-09-30 16:19
2005.10.23
OleConvertIStorageToOLEStream





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