从IE浏览器调用winform函数

时间:2015-03-14 08:18:24

标签: javascript c# winforms

我有一个winform,屏幕抓取另一个应用程序并生成一个html文件。我想将js添加到html文件中,以便当用户单击标题时,它将发送一个字符串并在winform中触发一个函数。

我已经研究了一段时间,但我见过的所有可能的解决方案都涉及webbrowser控件,我没有使用也不打算使用它。

是否可以通过js从IE页面调用winform函数?

更新:现在考虑使用webbrowser控件。

2 个答案:

答案 0 :(得分:3)

如果使用WebBrowser控件,则可以将脚本属性的对象设置为具有要向javascript公开的公共方法的类:

[ComVisibleAttribute(true)] //required
class MyJsInterface
{
  public string Test()
  {
    return "Hello World!";
  }
}

browser1.ObjectForScripting = new MyJsInterface(); //for example

然后,您可以使用MyJsInterface对象从javascript调用window.external中的方法:

//add this script to document.onload or in a script tag at the end of the document

//var headings = document.getElementsByClassName("heading");
//var headings = document.getElementsByTagName("h1");
for (var i = 0; i < headings.length; i++)
{
   var element = headings[i];
 //element.addEventListener("click", function () {
   element.attachEvent("click", function () {
     var text = window.external.Test();
     alert(text);
   }
}

在IE 9之前的Internet Explorer版本中,您必须使用attachEvent而不是标准addEventListenerLegacy Internet Explorer and attachEvent

也可以从后面的代码中调用javascript方法。 在这里阅读更多:
Implement Two-Way Communication Between DHTML Code and Client Application Code

答案 1 :(得分:1)

在表单上覆盖WndProc(请参阅herehere)并收听WM_LBUTTONDOWN条消息。根据Web浏览器控件的位置转换点。然后使用IHtmlDocumentmshtml object library)访问DOM并在该位置找到元素(使用elementFromPoint)。