Текущий архив: 2006.02.12;
Скачать: 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 вся ветка
Текущий архив: 2006.02.12;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.036 c