У меня есть элемент управления ActiveX, который я написал с помощью ATL, и я столкнулся с некоторой серьезной и запутанной проблемой. Когда iDispatch :: Invoke вызывается с DISPATCH_PROPERTYPUT/METHOD, все в порядке. Когда я возвращаю значение в IE javascript, после вызова метода VT_BSTR с допустимым BSTR, он отлично работает.Разрешение Отказано в IE w/iDispatch DISPATCH_PROPERTYGET
Но когда я пытаюсь:
var stringValue = Object.stringValue;
, который вызывает IDispatch вызывается с флагом DISPATCH_PROPERTYGET, и я установить возвращаемое значение в VT_BSTR с действительным BSTR (точно такой же, который я использую с вызовами методов), Я получаю разрешенное поле ошибки в IE.
Когда я возвращаю различные типы данных (longs, integers, bools, ... и т. Д.) В IE javascript, он отлично работает (с методом propertyGet()). Я получаю разрешение только при возврате VT_BSTR.
Любые идеи?
Можете ли вы опубликовать свой метод получения метода? Я предполагаю, что вы не возвращаете E_ACCESSDENIED. –
Howdy, \t \t \t \t pvarResult-> bstrVal = (BSTR) c; \t \t \t \t pvarResult-> vt = VT_BSTR; \t \t \t \t, если (wFlags == DISPATCH_PROPERTYGET) \t \t \t \t \t возврата S_OK; как примечание Я только что разместил заявление if wflags == DISPATCH_PROPERTYGET за несколько дней назад, чтобы убедиться, что все возвращается S_OK. это смешно проблема для меня .. я вылил биты idispatch на msdn и не нашел много, чтобы указать, что я делаю неправильно. также при отладке bstr действителен .. и тот же блок кода работает, когда dispatch_method установлен в wflags .. – anthony
Извините, что с этим связано. pvarResult-> bstrVal = (BSTR) c; pvarResult-> vt = VT_BSTR; if (wFlags == DISPATCH_PROPERTYGET) return S_OK – anthony