Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как распознать COM?


kingdom ©   (2002-11-22 18:18:00) 

Задача: На вход дается имя файла (exe или dll)
Вопрос: Как определить является ли файл COM сервером?


Marcus   (2002-11-25 18:13:00) [1]

> >To All
> Видимо нельзя :((

Есть еще способ, но только если сервер зарегистрирован на машине: открыть раздел

HKEY_CLASSES_ROOT\AppID\server.exe

Если он есть, server.exe - COM сервер. В этом разделе живет параметр AppID, по которому можно дальше найти подробную инфу о сервере.


Fantasist   (2002-11-25 18:05:00) [2]

Можно еще просто по тексту ехе-шника поискать эту функцию. Часто она там есть, но может оказаться, что он вызывает эту функцию из одной из своих подгружаемых библиотек.


Fantasist   (2002-11-25 17:59:00) [3]


> >To All
> Видимо нельзя :((

Ну, чисто теоретически, возможно перехватить вызов API функции CoRegisterClassObject. Потом запускаешь exe и если эта функция вызывается, то почти наверняка это OLE сервер.


kingdom   (2002-11-25 12:26:00) [4]

>To All
Видимо нельзя :((
вот облом!


kingdom   (2002-11-22 18:40:00) [5]

>Marcus
К сожалению на EXE это не действует!


Marcus   (2002-11-22 18:20:00) [6]

hLib := LoadLibrary("test.dll");
if (GetProcAddress(hLib, "DllRegisterServer") <> nil) then
IsComServer := true


Наверх

Титульная страница Поиск, карта сайта Написать письмо