В настоящее время я разрабатываю кнопку панели инструментов IE на C #, которая должна иметь возможность получать содержимое текущей вкладки и работать с ней. Однако всякий раз, когда нажимается кнопка, вызывается функция IObjectWithSite.SetSite (мой код будет опубликован в конце) и возвращает следующую ошибку:
Невозможно привести COM-объект типа
'System .__ ComObject' для типа интерфейса
SHDocVw.IWebBrowser2. Эта операция
не удалось из-за вызова QueryInterface
на COM-компоненте для
интерфейс с 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;
}
Заранее спасибо.