Ошибка кнопки панели инструментов Addon Internet Explorer

StackOverflow https://stackoverflow.com/questions/6075508

  •  07-09-2020
  •  | 
  •  

Вопрос

Я в настоящее время разрабатываю кнопку TE TIE панелей инструментов в C #, которая должна иметь возможность получить содержимое текущей вкладки и работать с ним. Однако всякая кнопка нажата, вызывается функция iObjectWithSite.setsite (мой код будет размещен в конце) и возвращает следующую ошибку:

Невозможно изменить объект типа «Система .__ ComObject» к типу интерфейса Shdocvw.iwebbrowser2 '. Эта операция не удалось, потому что вызов QueryInterface на COMONENENET для Интерфейс с IID «

Функция работает правильно, когда сайт загружен, но только выбрасывает эту ошибку при нажатии кнопки в панели инструментов. Как уже говорилось, создается функция Setsite, а затем вызывается функция IOLECOMMANDTARGET.EXEC.

Итак, я думаю, что мой вопрос: что я бросил объект, который передается в функцию Setsite, чтобы я мог получить доступ к документу на вкладке, в данный момент Internet Explorer открыт?

Мой текущий актуальный код для этих двух функций выглядит следующим образом:

int IObjectWithSite.SetSite(object site)
{
    String display = "";

    try { browser = (IWebBrowser2)site;}
    catch (Exception e) { display += e.Message + "\r\n"; }

    System.Windows.Forms.MessageBox.Show(display);

    return 0;
}


int IOleCommandTarget.Exec(IntPtr pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
{
    if (form == null)
    {
        form = new SomeForm();
        form.InputText = "";
    }
    form.ShowDialog();
    return 0;
}
.

Спасибо заранее.

Это было полезно?

Решение 2

The Exec function calls SetSite before actually executing. In order to work around this and still have the Exec function be able to access information about the browser, the SetSite and GetSite functions should exist in a separate class that the Exec function accesses.

Другие советы

Документированный путь Query IWebBrowser2 с кнопки панели инструментов для запроса iServiceProvider с сайта, затем QueryService для IID_IWEBBROSSERAPP

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top