c# winform中使用WebKit实现网页与winform的交互

1.工作 一年多了,一直没对自己在工作遇到的问题进行总结,每次遇到问题都要在网上找资料,导致完成项目之后,时间久了就会生疏。所以下定 决定总结自己在工作中遇到的各种问题。

进入正题:第一次写还请大神多多包涵,有不对的地方也请指点指点。

我在项目中 使用的是open-webkit-sharp:它是对webkit.net的又一次封装,提供了很多新功能。

google下载地址 :https://code.google.com/archive/p/open-webkit-sharp/ 

github网址 : https://github.com/Erls-Corporation/open-webkit-sharp

开发工具:Vs2017

下载之后 解压压缩包. 把Core文件夹和References文件夹下所有文件拷贝到你的工程目录(bin)下,然后打开你的项目,添加引用OpenWebKitSharp.dll和WebKit.Interop.dll(如果你的项目运行在.NET Framework 2.0 或 3.5 引用 Binary_NET2文件夹下的这两个文件,NET4.0的话就引用Binary文件夹下的这两个dll);

到自己的WinForm程序,在工具箱选择按右键-选择项 

点击浏览选择OpenWebKitSharp.dll,然后把WebKitBrowser拖到winfrom窗体里。

想要html页面访问后台   必须在前面加上

//当前类可以com组件的形式供外包调用
//[ComVisible(true)]
//[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]

winfrom后台程序

public class myClass
{
public int Test(int a ,int b)
{
//System.Windows.Forms.MessageBox.Show("alert:JS回调成功");

int c = a * b;
return c;
//System.Windows.Forms.MessageBox.Show("JS回调值alert:"+c);
}

}
private void Form1_Load(object sender, EventArgs e)

webKitBrowser1.Navigate("url");
this.webKitBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webKitBrowser1_DocumentCompleted);

}
public void webKitBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.webKitBrowser1.GetScriptManager.ScriptObject = new myClass();

}

 1 public class myClass
 2 {
 3 public int Test(int a ,int b)
 4 {
 5 //System.Windows.Forms.MessageBox.Show("alert:JS回调成功");
 6 
 7 int c = a * b;
 8 return c;
 9 //System.Windows.Forms.MessageBox.Show("JS回调值alert:"+c);
10 }
11 
12 }
13 private void Form1_Load(object sender, EventArgs e)
14 { 
15 webKitBrowser1.Navigate("url");
16 this.webKitBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webKitBrowser1_DocumentCompleted);
17 
18 }
19 public void webKitBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
20 {
21 this.webKitBrowser1.GetScriptManager.ScriptObject = new myClass();
22 
23 }
View Code

 

html里的调用代码

window.external.后台调用的方法

posted @ 2018-05-31 22:14  万万万W  阅读(14092)  评论(2编辑  收藏  举报