Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.217.4.206] |
|
Сообщ.
#1
,
|
|
|
Есть COM-сервер, у этого сервера есть объект App, у объекта App есть метод Start.
Сразу получить ID метода Start не получается. GetIDsOfNames возвращает DISP_E_UNKNOWNNAME. Получаю App: DISPID id; LPOLESTR string = L"App"; HRESULT r = pConn->GetIDsOfNames(IID_NULL, &string, DISPATCH_PROPERTYGET, LOCALE_USER_DEFAULT, &id);//здесь возвращается S_OK Что-то не пойму теперь, как вызвать метод Start у App. Видел такой код для Builder: Variant pVar; V_VT(&pVar) = VT_DISPATCH; V_DISPATCH(&pVar) = pIDisp;//IDispatch * Variant ret = Variant(pVar.OlePropertyGet("App")).OleFunction("Start"); Не понятно... |
Сообщ.
#2
,
|
|
|
Сначала нужно вызвать pConn->Invoke c id, которое тебе вернул GetIDsOfNames. Тебе вернётся указатель на IDispatch. Для него делаешь GetIDsOfNames("Start"), затем Invoke
|
Сообщ.
#3
,
|
|
|
Олег М, спасибо!
Всё получилось. |