Главная страница
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.048 c
15-1328990843
bootleger
2012-02-12 00:07
2013.03.22
Проверка существования ф-ла в интернете


3-1250742438
pushkin42
2009-08-20 08:27
2013.03.22
dbExpress не открывает личико...


15-1339360203
Юрий
2012-06-11 00:30
2013.03.22
С днем рождения ! 11 июня 2012 понедельник


2-1336394696
vasa777
2012-05-07 16:44
2013.03.22
длина лабела в символах


15-1329975955
Ega23
2012-02-23 09:45
2013.03.22
С праздником, мужики!