Я использую
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()
для управления / автоматизации экземпляра Internet Explorer. На некоторых страницах я хотел бы запустить функцию JavaScript (init()
). Кажется, лучший способ сделать это - использовать метод HtmlDocument
InvokeScript
, и я безуспешно пытаюсь сделать следующее:
void ie_DocumentComplete(object pDisp, ref object URL)
{
System.Windows.Forms.HtmlDocument doc = ie.Document;
doc.InvokeScript("init");
}
Что не получается, потому что doc
равно нулю. Я не могу получить System.Windows.Forms.HtmlDocument
от ie.Document
. Помимо попыток описанного выше, я также попробовал:
System.Windows.Forms.HtmlDocument doc2 = (System.Windows.Forms.HtmlDocument)ie.Document;
и
System.Windows.Forms.HtmlDocument doc2 = ie.Document as System.Windows.Forms.HtmlDocument;
Любые идеи о том, как я могу заставить это работать - или еще лучший способ запуска сценариев на странице?
Спасибо !!
EDIT :
Другой способ запуска функции JavaScript выглядит следующим образом:
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()
mshtml.HTMLDocument doc = ie.Document;
mshtml.IHTMLWindow2 win = doc.parentWindow as mshtml.IHTMLWindow2;
win.execScript("init();", "javascript");
Но линия
mshtml.IHTMLWindow2 win = doc.parentWindow as mshtml.IHTMLWindow2;
выдает ошибку, что это недопустимое приведение (InvalidCastException
) - даже если IntelliSense (и MSDN) говорят, что doc.parentWindow
- это IHTMLWindow2
. Есть идеи? (Также я убедился, что страница полностью загружена перед запуском этого кода)