Я строю аддон IE и хочу быть "внешним" объектом.поэтому я использую SetUIHandler, чтобы установить свой класс как UIHandler.
Я реализую IDocHostUIHandler (ссылаясь на элементы управления Microsoft Internet (COM-объект)), а в GetExternal я возвращаю свой класс:
public void GetExternal(out object ppDispatch)
{
ppDispatch = this;
}
Это прекрасно работает.любой другой вариант мне не интересен, поэтому мне нужно вернуть E_NOTIMPL.
например:
public void TranslateAccelerator(ref tagMSG lpmsg, ref Guid pguidCmdGroup, uint nCmdID)
{
Marshal.ThrowExceptionForHR((int)WinAPI.HRESULT.E_NOTIMPL);
}
прекрасно работает, но мне также нужно реализовать IShellUIHelper (IE ожидает его от UIHandler),
, а затем, когда я реализую добавить в избранное:
public void AddFavorite(string URL, ref object Title)
{
Marshal.ThrowExceptionForHR((int)WinAPI.HRESULT.E_NOTIMPL);
}
это не работает (JS получил и ошибка).
, когда я пытался сделать то же самоев C ++ и вернуть E_NOTIMPL в качестве возвращаемого значения, все прекрасно работает:
STDMETHODIMP CMyClass::AddToFavoritesBar(BSTR URL, BSTR Title, VARIANT *Type)
{
return E_NOTIMPL;
}
Я также попытался заменить Marshal.ThrowExceptionForHR((int)WinAPI.HRESULT.E_NOTIMPL);
на throw new COMException("", (int)WinAPI.HRESULT.E_NOTIMPL);
, и он все еще не работает.
можеткто-нибудь помочь мне с этим?
Спасибо,
Омри