Вниз
Скачать: CL | DM;

Инициализация COM и получение доступа к объекту   Найти похожие ветки 

 
DenXi ©   (2006-01-25 01:43) [0]

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

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

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


 
Alex_V ©   (2006-01-25 04:36) [1]

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


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


> DenXi ©   (25.01.06 01:43)  


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

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


 
DenXi ©   (2006-01-25 13:44) [3]


> Alex_V


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


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

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

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


 
DenXi ©   (2006-01-25 13:48) [4]


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


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


 
sniknik ©   (2006-01-25 13:56) [5]

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


 
DenXi ©   (2006-01-25 14:04) [6]

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

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


 
DenXi ©   (2006-01-25 14:15) [7]

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


 
DenXi ©   (2006-01-25 14:18) [8]

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


 
Digitman ©   (2006-01-25 14:21) [9]


> Один раз


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


 
DenXi ©   (2006-01-25 14:22) [10]

спаибо!!!!


 
DenXi ©   (2006-01-25 14:37) [11]


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


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


 
DenXi ©   (2006-01-25 15:38) [12]

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



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.026 c
15-1137823185
begin...end
2006-01-21 08:59
2006.02.12
С Днём рождения! 21 января


3-1134387258
Wolferio
2005-12-12 14:34
2006.02.12
Управление базами


15-1137654352
WondeRu
2006-01-19 10:05
2006.02.12
Составление 3D-карты из двух аэро(космо)фотоснимков.


2-1137928111
Rubey
2006-01-22 14:08
2006.02.12
Скроллинг по STRINGGRID - у


15-1138028265
Харько
2006-01-23 17:57
2006.02.12
Алгоритм выделения части из целого




   Наверх