将JavaScript代码从c# windows应用程序发送到正在运行的IE实例是行不通的



我正在做一个项目,我需要从c# windows应用程序发送一个JavaScript函数到internet explorer的运行实例,然后IE运行脚本并将结果返回到我的c#应用程序。(非常混乱?=))

为了让它更清楚,下面是情况:

我得到了internet explorer运行实例的IHTMLDocument2:

 htmlDocument = ObjectFromLresult(lResult,typeof(IHTMLDocument).GUID, IntPtr.Zero) as IHTMLDocument2;

然后我想发送一个JavaScript函数到IE实例,代码可以是这样的:

string code = "function myTest() { alert('ready'); } myTest();";

我使用以下代码发送JavaScript代码:

htmlDocument.Script.GetType().InvokeMember("eval", System.Reflection.BindingFlags.InvokeMethod, null, htmlDocument.Script, new object[] { code });

现在问题来了:

将上述简单的JavaScript代码发送到IE工作正常,但如果我想发送与事件(如onmouseover, onmouseclick等)一起工作的代码,它不起作用,并导致以下例外:

TargetInvocationException未处理。异常已被调用的目标抛出。

问:如何发送使用事件的JavaScript代码:

document.body.onmouseover = function(mEvent){...};

注意:这不是ASP.net或web应用程序,这是桌面应用程序。

我一直很感激你的知识和伟大的想法。提前感谢。:)

您尝试过这样调用方法吗?:

string code = "function myTest() { alert('ready'); } myTest();"; 
htmlDocument.GetType().GetMethod("eval").Invoke(htmlDocument, new object[] { code });

最新更新