Cómo invocar scripts funciona en msHTML

Estoy usando axWebBrowser y necesito hacer funcionar un script que funcione cuando se cambie el elemento seleccionado de un listbox.

En el control predeterminado de webBrowser hay un método como;

WebBrowserEx1.Document.InvokeScript("script") 

¡Pero en axWebBrowser no puedo trabajar ningún script! Y no hay documentación sobre este control.

¿Alguien sabe cómo?

Una respuesta tardía, pero con suerte todavía puede ayudar a alguien. Hay varias maneras de invocar una secuencia de comandos al usar el control WebBrowser ActiveX. Las mismas técnicas también se pueden usar con la versión WinForms del control WebBrowser (a través de webBrowser.HtmlDocument.DomDocument ) y con la versión WPF (a través de webBrowser.Document ):

 void CallScript(SHDocVw.WebBrowser axWebBrowser) { // // Using C# dynamics, which maps to COM's IDispatch::GetIDsOfNames, // IDispatch::Invoke // dynamic htmlDocument = axWebBrowser.Document; dynamic htmlWindow = htmlDocument.parentWindow; // make sure the web page has at least one  htmlWindow.TestFunc("Hello again!"); // call any JavaScript via "eval" var result = (bool)htmlWindow.eval("(function() { return confirm('Continue?'); })()"); MessageBox.Show(result.ToString()); // // Using .NET reflection: // object htmlWindowObject = GetProperty(axWebBrowser.Document, "parentWindow"); // call a global JavaScript function InvokeScript(htmlWindowObject, "TestFunc", "Hello again!"); // call any JavaScript via "eval" result = (bool)InvokeScript(htmlWindowObject, "eval", "(function() { return confirm('Continue?'); })()"); MessageBox.Show(result.ToString()); } static object GetProperty(object callee, string property) { return callee.GetType().InvokeMember(property, BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.Public, null, callee, new Object[] { }); } static object InvokeScript(object callee, string method, params object[] args) { return callee.GetType().InvokeMember(method, BindingFlags.Instance | BindingFlags.InvokeMethod | BindingFlags.Public, null, callee, args); } 

Tiene que haber al menos una etiqueta para que funcione el eval de JavaScript, que se puede inyectar como se muestra arriba.

Alternativamente, el motor de JavaScript se puede inicializar de forma asincrónica con algo como webBrowser.Document.InvokeScript("setTimer", new[] { "window.external.notifyScript()", "1" }) o webBrowser.Navigate("javascript:(window.external.notifyScript(), void(0))") .