estoy usandoLa ejecución de una función de JavaScript en una instancia de Internet Explorer
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()
para controlar/automatizar una instancia de Internet Explorer. En ciertas páginas, me gustaría ejecutar una función de JavaScript (init()
). Parece que la mejor manera de hacer esto es utilizar un método InvokeScript
HtmlDocument
's y he estado tratando el siguiente sin suerte:
void ie_DocumentComplete(object pDisp, ref object URL)
{
System.Windows.Forms.HtmlDocument doc = ie.Document;
doc.InvokeScript("init");
}
no lo consigue porque doc
es nulo. Parece que no puedo obtener un System.Windows.Forms.HtmlDocument
de ie.Document
. Además de intentar lo anterior, también he intentado:
System.Windows.Forms.HtmlDocument doc2 = (System.Windows.Forms.HtmlDocument)ie.Document;
y
System.Windows.Forms.HtmlDocument doc2 = ie.Document as System.Windows.Forms.HtmlDocument;
¿Alguna idea sobre cómo puedo conseguir que esto funcione - o una mejor manera de ejecutar secuencias de comandos en la página?
Gracias!
EDITAR:
Otra forma de ejecutar una función de JavaScript parece ser:
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer()
mshtml.HTMLDocument doc = ie.Document;
mshtml.IHTMLWindow2 win = doc.parentWindow as mshtml.IHTMLWindow2;
win.execScript("init();", "javascript");
Pero la línea
mshtml.IHTMLWindow2 win = doc.parentWindow as mshtml.IHTMLWindow2;
genera un error que se trata de un reparto no válido (InvalidCastException
) - aunque IntelliSense (y MSDN) dicen doc.parentWindow
es un IHTMLWindow2
. ¿Algunas ideas? (También me he asegurado de una página se ha cargado completamente antes de ejecutar ese código)
Su respuesta sería más probable que lo ayude si usted explicó específicamente lo que hizo para resolver el problema de enhebrado. :-) – EricLaw