![]() |
COM. C++. Interface IDispatch::Invoke
Добрый День,
:help: У меня есть такая проблема с Итерфэйсом 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 что означает успешное завершение работы метода. Но все происходит иначе. :idontnow: hr = 0x80020009 Exception occurred. excepinfo = bstrDescription: 0x00176d24 "The parameter is incorrect. Есть ли сооьражения у кого нибудь по этому поводу ? Если да то помогите плеазе. Если нужен листинг кода дайте знать Зарание Спасибо!!! :молись: -- Shaman Marakame. |
Я думаю что ошибка в том что ты вместо выходного параметра BSTR* передаешь NULL. Out параметр должен быть законным указателем на BSTR. Не забудь потом SysFreeString сделать для этого BSTR-а
И еще вместо Invoke я бы посоветовал импортировать type library, то есть использовать директиву #import. И работать будет быстрее и кода меньше писать придеться Подробности по использованию #import можешь посмотреть на rsdn.ru в разделе статей про COM. |
| Часовой пояс GMT +4, время: 12:27. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.