Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM и несколько экземпляров приложения 
:(
    Опции темы
Qwe2
Дата 28.9.2012, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть приложение, мне надо к нему подключиться с помощью COM-технологии и работать с ним (использую WinAPI и MSVC2010). Я знаю его CLSID (получаю с помощью CLSIDFromProgID(<название>)). Когда запускаю это приложение, в таблице запущенных объектов (Running Object Table, ROT) появляется значение, совпадающее с CLSID. Если запущено несколько приложений, то в ROT будет столько же одинаковых записей = CLSID. Когда я в цикле перебираю значения ROT и при совпадении с CLSID приложения пытаюсь подключиться, то всегда подключаюсь к первому из запущенных приложений:
Код

IRunningObjectTable *prot = NULL;
IEnumMoniker *pEnum = NULL;
IMoniker * pMoniker = NULL;
ULONG cElt;
IUnknown* pUnk = NULL;

IBindCtx *pBindCtx;
CreateBindCtx(0, &pBindCtx);

GetRunningObjectTable(0, &prot);
prot->EnumRunning(&pEnum);
while(pEnum->Next(1, &pMoniker, &cElt) == S_OK)
{
    CreateBindCtx(0, &pBindCtx);
    pMoniker->GetDisplayName(pBindCtx, NULL, &pszName);
    ...

    if(<текущее значение ROT = CLSID>)
    {
        prot->GetObjectA(pMoniker, &pUnk);
    }
}
<...>

Если использовать BindToObject, то происходит ошибка E_INVALIDARG:
Код

if(...)
{
    hr = pMoniker->BindToObject(pBindCtx, 0, IID_IUnknown, reinterpret_cast<void**>(&pUnk));
}

Что я делаю не так? Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




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


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

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