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

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

Инициализация COM и получение доступа к объекту [D7, XP]


DenXi ©   (2006-01-25 01:43:00) 

Привет, мастера!
Пишу сервис, который иногда должен добавлять в Word текст.
Открывать и добавлять текст при помощи CreateOleObjectне подходит, т.к. мне необходимо работать с Word только в том случае, если он уже открыт. С CreateOl...... не получается, т.к. он создает новый экземпляр приложения. Может, можно как-нить при помощи GetActiveOleObject?

И второе: почему у меня в ComObjнет CoInitializeи CoUnitialize, хотя CoInitializeExесть? Может, не так делаю? Как правильно инициализировать библиотеки COM и чито для этого в uses писать?

Заранее благодарен :)))


DenXi   (2006-01-25 15:38:00) [1]

так.... все, я сам разобрался.... дело в обработке исключений....


DenXi   (2006-01-25 14:37:00) [2]


> Набережных С.


Ну предположим, мой сервис создает экзэмпляр Word и время от времени работает с ним....... возникает другая проблема: когда пользоваетель закрывает этот экзэмпляр - новый не создается и происходит исключение.... а с этим че делать???


DenXi   (2006-01-25 14:22:00) [3]

спаибо!!!!


Digitman   (2006-01-25 14:21:00) [4]


> Один раз


Да, один раз.
На весь период жизни потока.
Вне зависимости от того сколько раз за время своей жизни поток был усыплен и разбужден.


DenXi   (2006-01-25 14:18:00) [5]

А такой вопрос: если я работаю в потоке, сколько раз мне необходимо инициализировать COM? Один раз???? И если я его приостанавливаю, влияет ли это на COM, нужно ли мне снова потом все инициализировать?


DenXi   (2006-01-25 14:15:00) [6]

А не...........  Пашет! Все, спасиб.  Всем пасиб! :))))))))))))


DenXi   (2006-01-25 14:04:00) [7]

это опечатка, CoUninitialize..... Но дык и говорю: в мое делфе в ActiveX не пашет ни CoIni....., ни CoUin...... В чем дело - ума не приложу! Вообще там на Co...... функций и процедур даже нет!!!!!

И в чем это дело.......................


sniknik   (2006-01-25 13:56:00) [8]

описаны в ActiveX, только у тебя с написано неправильно (только сдесь?) первая функция.


DenXi   (2006-01-25 13:48:00) [9]


> первую проблему


точннее, вторую :)))


DenXi   (2006-01-25 13:44:00) [10]


> Alex_V


мне эта вкладка не интересна, т.к. я учусь на WinAPI, что б потом в C++ можно было спок перенести (но все равно пасиб :))))


> Набережных С.

спасибо......

Но прошу обратить еще внимание на мою первую проблему.... В каком модуле ActiveX или ComObj все это??? Ни то, ни другое не пашет с CoUnitialize и CoInitialize - просто нет там этого и все!


Набережных С.   (2006-01-25 07:17:00) [11]


> DenXi ©   (25.01.06 01:43)  


> Может, можно как-нить при помощи GetActiveOleObject

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


Alex_V   (2006-01-25 04:36:00) [12]

а не проще использовать компоненты со страницы Servers там все есть для вашей задачи...


Наверх

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