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

Вниз

Вопрос по OLE Automation   Найти похожие ветки 

 
den_c   (2003-06-20 14:12) [0]

Помогите чайнику.. Мне нужно из одного приложения запускать другое приложение, передать ему какие-то параметры и отпустить в свободное плавание.
Решил сделать это через OLE Automation. Первое приложение - клиент, второе сервер.
Нашел по этой теме статью http://www.delphikingdom.com/helloworld/com.htm и вроде все работает нормально, вот только не знаю как отпускать сервер в свободное плавание. Если сервер был до этого запущен потом запускаю клиента и делаю из него какой-то вызов все работает нормально. При закрытии клиента сервер остается. А вот если делаю какой-то вызов из клиента и при этом сервер не запущен, то сервер запускается, но при закрытии клиента закрывается и сервер, а мне надо чтобы он оставался.
Очевидно что при закрытии клиента счетчик ссылок на сервере становится равным 0 и сервер прекращает работу. Как сделать чтобы этого не происходило?


 
den_c   (2003-06-20 21:47) [1]

Up


 
Suntechnic ©   (2003-06-21 07:47) [2]

Теоретически, каждая фабрика Co-класса имеет метод LockServer, специально для этих целей и предназначенный.


 
den_c   (2003-06-21 13:49) [3]

2 Suntechnic
А можно хоть чуть подробней...


 
Suntechnic ©   (2003-06-21 17:26) [4]

Есть такой интерфейс IClassFactory, который имплементирует любая фабрика Co-класса. Вот этот интерфес и содержит метод LockServer. Получить ссылку на этот интерфес можно путём вызова CoCreateInstance с соответствующими параметрами.


 
ggsoft ©   (2003-06-21 17:38) [5]

Ну да... а что мы там в CoCreateInstance в качестве REFCLSID будем передавать, если запрашиваем объект с интерфейсом IID_IClassFactory...

Получить фабрику класса для нужного объекта можно через:
CoGetClassObject(... IID_IClassFactory, ...)

Только ведь COM так и реализована, чтобы при завершении работы контроллера, сервер выгружался из памяти, зачем он там "в свободном плавании"...


 
Suntechnic ©   (2003-06-21 18:37) [6]

>ggsoft ©
Сорри очепятался :)
Конечно же это должен быть CoGetClassObject


 
den_c   (2003-06-21 21:17) [7]

Огромное спасибо Suntechnic за то что подсказали в каком направлении копать....

2 ggsoft
COM я использую только для запуска приложения. Фактически у меня нет реализации какой-то функциональности на сервере, которую он может предоставлять клиентам. И между прочим не у меня одного возникла потребность не выгружать сервер...



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

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

Наверх




Память: 0.48 MB
Время: 0.02 c
9-7278
KoHe4Ho }|{e 6ot
2003-01-18 23:17
2003.07.03
Как перерисовывать image или canvas без мигания ?


14-7663
neuro
2003-06-15 18:57
2003.07.03
синтезаторы виртуальные.


1-7540
@Ujin
2003-06-22 16:25
2003.07.03
TRegGroups - почему его не видно?


14-7695
Jimal
2003-06-14 01:15
2003.07.03
Как программе скопировать саму себя не зная местонахождение


7-7740
dolmat
2003-04-18 15:11
2003.07.03
как получить список всех запущенных приложений?