![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Инициализация 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 там все есть для вашей задачи...