Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Automation в VC++, Подключение к запущенному экземпляру 
:(
    Опции темы
Steady
Дата 10.12.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Здравствуйте господа.
Есть такая проблема. Пишу программу в VC++ на основе MFS из которой надо управлять Word’ом.
При использовании строки:
Код

app.CreateDispatch("Word.Application")

где  app, это объект класса порожденного от ColeDispatchDriver, запускается новый экземпляр Word.
Задача в том чтобы подключится уже к запущенному ранее экземпляру Word. 
Видимо можно подключится с помощью функции
ColeDispatchDriver::AttachDispatch,
но для нее необходим указатель на IDispatch, а вот где взять этот указатель, я никак не могу понять… 
Я знаю, что в VB, а при поиске в Инете понял, что и Делфи есть функции для этого, GetObject и GetActiveOleObject. В связи с этим вопрос. Есть ли в VC++ аналогичные функции

PM MAIL   Вверх
Steady
Дата 11.12.2006, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Привет господа!
Может быть всетаки кто-нибудь подскажет как подключиться к уже запущенному серверу.  smile 
PM MAIL   Вверх
Steady
Дата 13.12.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Здравствуйте господа

Вначале извините за опечатку...
Конечно же пишу программу в VC++ на основе MFC, а не MFS, как указал ранее.

А по вопросу разобрался, если кому интересно то вот:
Код

     CApplication word;
    LPUNKNOWN pUnk;
    CLSID clsid;

    ::CLSIDFromProgID(L"Word.Application", &clsid); // Получаем CLSID из реестра

    // Если Word запущен подключаемся к нему
    if(::GetActiveObject(clsid, NULL, &pUnk) == S_OK){
        VERIFY(pUnk->QueryInterface(IID_IDispatch,(void**) &pDisp) == S_OK);
        word.AttachDispatch(pDisp);
        pUnk->Release();
    }
    else{    // иначе запускаем новый экземпляр сервера и так же подключаемся к нему
        if (!word.CreateDispatch("Word.Application", NULL))
        {
            AfxMessageBox("Word не был запущен!", MB_OK);
            return;
        }
        word.put_Visible(true); // Эта строка по желанию
    }


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.