WebKit.NET-0.5简单应用
最近想用c#做个简单的浏览器工具,但是网站一些内容不支持c#内置的WebBowser控件,于是只能改用其他内核浏览器进行开发,搜索到WebKit.NET这个封装好的浏览器引擎,需求的功能也都有,于是用WebKit.NET进行开发。
WebKit.NET官网 http://webkitdotnet.sourceforge.net/
WebKit.NETgithub https://github.com/webkitdotnet/webkitdotnet/tree/develop/WebKitBrowser
直接下载0.5版本的windows bin文件地址为:https://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download
项目使用WebKit.NET
一:把下载解压好的WebKit.NET-0.5-bin-cairo\bin目录文件复制到项目\bin\Debug下面

二:添加引用”WebKitBrowser.dll“

三:引用之后在“工具箱-常规”里面应该有”WebKitBrowser“

四:项目使用
可以手动写代码添加”WebKitBrowser“也可以在工具箱拖控件进去
代码示例
WebKitBrowser browser = new WebKitBrowser();
browser.Dock = DockStyle.Fill;//充满窗口
this.Controls.Add(browser);//添加至窗体 或 容器
WebKitBrowser的使用
一:WebKitBrowser打开指定连接
browser.Navigate(url);
二:WebKitBrowser弹出连接的获取
WebKitBrowser弹出新链接是直接在系统默认浏览器打开的,我们需要进行修改获取WebKitBrowser弹出的新链接地址,再进行操作
this.browser.NewWindowCreated += new WebKit.NewWindowCreatedEventHandler(this.browser_NewWindowCreated);
private void browser_NewWindowCreated(object sender, NewWindowCreatedEventArgs e)
{
e.WebKitBrowser.Navigating += new WebBrowserNavigatingEventHandler(WebKitBrowser_Navigating);
e.WebKitBrowser.Location = new Point(2000, 2000);
this.Controls.Add(e.WebKitBrowser);
}
void WebKitBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
//WebKitBrowser弹出的新链接地址
string url = e.Url.ToString();
}
如果是拖控件操作的,在WebKitBrowser控件”属性-事件“双击NewWindowCreated后进行编辑即可
private void browser_NewWindowCreated(object sender, NewWindowCreatedEventArgs e)
{
e.WebKitBrowser.Navigating += new WebBrowserNavigatingEventHandler(WebKitBrowser_Navigating);
e.WebKitBrowser.Location = new Point(2000, 2000);
this.Controls.Add(e.WebKitBrowser);
}
void WebKitBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
//WebKitBrowser弹出的新链接地址
string url = e.Url.ToString();
}
三:WebKitBrowser执行js
string strScript = "function GetSpanContent(){return document.getElementById('span').innerText;}GetSpanContent();";
string result = browser.StringByEvaluatingJavaScriptFromString(strScript);
具体操作过程中,发现有些js在chrome可以执行,在WebKitBrowser执行会报错,比如document.getElementById('span').innerHTML需写成document.getElementById('span').innerText没有查到资料,可能是有些语句不支持,如果执行语句出错可以换种写法试试。
另外要注意的是,试了一下,页面后期添加的元素,是取不到的,有解决方法可以留言讨论下
四:WebKitBrowser页面代码
WebKitBrowser页面代码属性是browser.DocumentText。有时候不用执行js直接用这个属性去获取判断一些东西也是可以的。
WebKitBrowser的使用例子
private void btnLogin_Click(object sender, EventArgs e)
{
Log("开始登录操作");
try
{
if (browser != null)
{
string strScript = "document.getElementById('txtUserName').value='" + txtUser.Text.Trim() + "';document.getElementById('txtPassword').value='" + txtPassword.Text.Trim() + "';document.getElementById('btnLogin').click();";
browser.StringByEvaluatingJavaScriptFromString(strScript);
Log("登录操作完成!");
}
}
catch (Exception ex)
{
Log("登录失败!");
}
}
上面代码是演示了下怎么进行自动登录操作,具体需求可通过js完成的WebKit.NET应该都是能完成的。
本篇文章到此结束。
WebKit.NET-0.5简单应用的更多相关文章
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理
这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...
- 云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
云优化的概念.Entity Framework 7.0.简单吞吐量压力测试 继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之 ...
- Android 6.0 超级简单的权限申请2 (Permission)
代码地址如下:http://www.demodashi.com/demo/13506.html 写在前面 上次写了一个权限申请的例子Android 6.0 超级简单的权限申请 (Permission) ...
- Android 6.0 超级简单的权限申请 (Permission)
代码地址如下:http://www.demodashi.com/demo/13369.html 背景描述 随着Android系统的不断升级,谷歌对用户的隐私是越来越注重了,给我们开发者带来了更多的繁琐 ...
- 用Vue2.0实现简单的分页及跳转
用Vue2.0实现简单的分页及跳转 2018年07月26日 20:29:51 Freya_yyy 阅读数 3369 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...
- 用pytorch1.0搭建简单的神经网络:进行多分类分析
用pytorch1.0搭建简单的神经网络:进行多分类分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib ...
- percona-toolkit 3.0.13 简单安装记录
percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...
- percona-xtrabackup-8.0.7简单快捷使用
percona-xtrabackup-8.0.7简单快捷使用 # 参考资料: https://blog.csdn.net/vkingnew/article/details/83012316 # 环境: ...
- 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试
继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...
- Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理1
首先给上项目的整体框架图:,这里我没有使用BLL,因为感觉太烦了就没有去使用. 那么接下来我们首先先去Model层中添加Model. 管理员类: using System; using System. ...
随机推荐
- RabbitMQ学习笔记(3)----RabbitMQ Worker的使用
1. Woker队列结构图 这里表示一个生产者生产了消息发送到队列中,但是确有两个消费者在消费同一个队列中的消息. 2. 创建一个生产者 Producer如下: package com.wangx.r ...
- CDR X7正版优惠,3折来袭,好礼相送,行不行动?
意料之中的是,CorelDRAW系列软件在618期间成绩再次突破历史,成为新高.因为X7版本活动在6月15号的才上, 加之在此之前从没有过X7的活动优惠,势头之猛,可想而知,如此一来,官方预定的限量2 ...
- X位的有/无符号整数
目录 X位的有符号整数 X位的无符号整数 知识点来自leetcode整数翻转 X位的有符号整数 以4位为例,不管多少位都是相同的概念 在有符号整数中,第一位二进制位用来表示符号,0为正,1为负 最大值 ...
- s5pv210 uboot-2012-10移植(二) 之能够启动进入控制台
这次我们将从官网下载的最新uboot-2012-10移植到s5pv210开发板上,让其进入控制台,效果如下: 首先,我暂时没采用内核的SPL,这个将在后面给补上,这里的BL1是我自己参考资料写的,我用 ...
- .get(),eq()的区别
.get(),eq()的区别 eq:返回是一个jquery对象作用是将匹配的元素集合缩减为一个元素.这个元素在匹配元素集合中的位置变为0,而集合长度变成1. get:是一个html对象数组作用是取得其 ...
- thinkphp 同一字段不同查询条件实现
搞定了 另外区间查询还可以支持更多的条件,只要是针对一个字段的条件都可以写到一起,例如:$map['name'] = array(array('like','%a%'), array('like',' ...
- WinServer-IIS-IIS负载均衡
安装应用程序路由 提供的服务器的地址必须是可以访问,不然无法进入到下面的这个管理界面 来自为知笔记(Wiz)
- HDU 1232 - 并查集 解题报告
畅通project Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- BCB使用线程删除目录中的图片
BCB新建线程DeleteImgThread类.其会默认继承Thread类,然后在Execute函数中编写代码, void __fastcall DeleteImgThread::Execute() ...
- Android在程序中浏览网页
本文是自己学习所做笔记,欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 有时须要在程序中浏览一些网页.当然了能够通过调用系统的浏览器来打开浏览.可是大多 ...