sto usandoEsecuzione di una funzione JavaScript in un'istanza di Internet Explorer
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()
per controllare/automatizzare un'istanza di Internet Explorer. Su alcune pagine mi piacerebbe eseguire una funzione JavaScript (init()
). Sembra che il modo migliore per farlo è quello di utilizzare il metodo 's un HtmlDocument
InvokeScript
e ho cercato il seguente senza fortuna:
void ie_DocumentComplete(object pDisp, ref object URL)
{
System.Windows.Forms.HtmlDocument doc = ie.Document;
doc.InvokeScript("init");
}
Il che non riesce a causa doc
è nullo. Non riesco a ottenere uno System.Windows.Forms.HtmlDocument
da ie.Document
. Oltre a cercare quanto sopra, ho anche provato:
System.Windows.Forms.HtmlDocument doc2 = (System.Windows.Forms.HtmlDocument)ie.Document;
e
System.Windows.Forms.HtmlDocument doc2 = ie.Document as System.Windows.Forms.HtmlDocument;
Tutte le idee su come posso arrivare a questo lavoro - o un modo ancora migliore per eseguire gli script nella pagina?
Grazie !!
EDIT:
Un altro modo per eseguire una funzione JavaScript sembra essere:
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()
mshtml.HTMLDocument doc = ie.Document;
mshtml.IHTMLWindow2 win = doc.parentWindow as mshtml.IHTMLWindow2;
win.execScript("init();", "javascript");
Ma la linea
mshtml.IHTMLWindow2 win = doc.parentWindow as mshtml.IHTMLWindow2;
genera un errore che si tratta di un cast non valido (InvalidCastException
) - anche se IntelliSense (e MSDN) dicono che doc.parentWindow
è un IHTMLWindow2
. Qualche idea? (Anche io ho fatto in modo che una pagina è stata completamente caricato prima di eseguire il codice)
La tua risposta sarà più probabile che ti aiuti se hai spiegato in modo specifico cosa hai fatto per risolvere il problema del threading. :-) – EricLaw