| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
COM. C++. Interface IDispatch::Invoke
Добрый День,
У меня есть такая проблема с Итерфэйсом IDispatch->Invoke hr = pDisp->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dispparamsArgs, NULL, &excepinfo, NULL); Объявляю параметр такими Образом вот примеры: //DISPPARAMS dispparamsArgs = {(VARIANTARG*)&pbstrXMLDoc, NULL, 1, 0}; DISPPARAMS dispparamsArgs = {NULL, NULL, 0, 0}; Это сам метод каторый мне нужно вызвать: IRMGetLicense::GetSystemInfo HRESULT GetSystemInfo( BSTR* pbstrXMLDoc ); Параметр "pbstrXMLDoc" [out] укозатель на строку с "system information." возр. Результат S_OK что означает успешное завершение работы метода. Но все происходит иначе. hr = 0x80020009 Exception occurred. excepinfo = bstrDescription: 0x00176d24 "The parameter is incorrect. Есть ли сооьражения у кого нибудь по этому поводу ? Если да то помогите плеазе. Если нужен листинг кода дайте знать Зарание Спасибо!!! -- Shaman Marakame. |
|
|
# 2 |
|
Member
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245
![]() ![]() |
Я думаю что ошибка в том что ты вместо выходного параметра BSTR* передаешь NULL. Out параметр должен быть законным указателем на BSTR. Не забудь потом SysFreeString сделать для этого BSTR-а
И еще вместо Invoke я бы посоветовал импортировать type library, то есть использовать директиву #import. И работать будет быстрее и кода меньше писать придеться Подробности по использованию #import можешь посмотреть на rsdn.ru в разделе статей про COM.
__________________
Best Regards |
|
|