我正在做一个项目,我需要从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 });