Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Ком сервер в сервисе.   Найти похожие ветки 

 
Дмитрий С ©   (2012-10-31 21:32) [0]

Создал, зарегистрировал в реестре:

[HKEY_CLASSES_ROOT\AppID\{914DA410-7FE8-11D2-98FA-204C4F4F5020}]
"LocalService"="SvcWithComServer"

[HKEY_CLASSES_ROOT\CLSID\{914DA413-7FE8-11D2-98FA-204C4F4F5020}]
"AppID"="{914DA410-7FE8-11D2-98FA-204C4F4F5020}"


Работает. Но два вопроса:
1.
 Почему код использования получения объекта работает:
   OleCheck(CoGetClassObject(CLSGUID, CLSCTX_ALL, nil, IClassFactory, Factory));
   OleCheck(Factory.CreateInstance(nil, IDispatch, Obj));

А такой нет:
OleCheck(CoCreateInstance(CLSGUID, nil, CLSCTX_ALL, IDispatch, Obj))
Ошибка: интерфейс не поддерживается. Замена IDispatch на IUnknown ничего не изменила.

2.
Как сделать чтобы вызов CoGetClassObject не приводил к запуску службы, а возвращал ошибку, если служба не запущена.


 
Дмитрий С ©   (2012-10-31 21:53) [1]

со 2 разобрался.

1 вопрос актуален еще.


 
Dimka Maslov ©   (2012-10-31 22:03) [2]


> со 2 разобрался.


Нам расскажи, интересно же.


 
Дмитрий С ©   (2012-10-31 22:09) [3]


> Нам расскажи, интересно же.

Точно.

Для этого в
[HKEY_CLASSES_ROOT\AppID\{914DA410-7FE8-11D2-98FA-204C4F4F5020}]
нужно определить параметр LaunchPermission.
Это можно сделать с помощью, например, dcomcnfg.exe
или самому записать туда DACL


 
Дмитрий С ©   (2012-11-01 18:37) [4]

с 1 тоже разобрался.
Это было связано с неправильной реализацией метода IClassFactory.CreateInstance.

Было так:

if unkOuter <> nil then
   Exit(CLASS_E_NOAGGREGATION);

 if IsEqualIID(iid, IDispatch) then
   IDispatch(obj) := FConnector
 else
   Exit(E_NOINTERFACE);

 Result := S_OK;


А надо было минимум так:

if unkOuter <> nil then
   Exit(CLASS_E_NOAGGREGATION);

 if IsEqualIID(iid, IDispatch) then
   IDispatch(obj) := FConnector
 else
 if IsEqualGUID(iid, IInterface) then
   IInterface(obj) := FConnector
 else
   Exit(E_NOINTERFACE);

 Result := S_OK;



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.051 c
10-1180345824
лесник
2007-05-28 13:50
2013.03.22
ms word


15-1333895122
Юрий Зотов
2012-04-08 18:25
2013.03.22
Пропали иконки


15-1336227120
KilkennyCat
2012-05-05 18:12
2013.03.22
TImage - мини-фотошоп


15-1347821674
Dmitry375
2012-09-16 22:54
2013.03.22
Running Delphi on Mac OS X


2-1329812260
jacksotnik
2012-02-21 12:17
2013.03.22
Маска ввода