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 }
html里的调用代码
window.external.后台调用的方法