ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:20.94KB ,
资源ID:4728286      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4728286.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ChromiumWebBrowser.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ChromiumWebBrowser.docx

1、ChromiumWebBrowser基于Chromium构建Chrome WebBrowser for .net 控件我分为了两个项目,一是libfuncs,为了使DLL名称一致,我重命名了CefSharp项目,它负责提供操作浏览器的方法和触发事件;二是cwber,它是自定义的WinForm控件,用于在Form上的布局,必须引用libfuncs.dll。源码地址:cwber比较简单,以下是它的代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;usin

2、g System.Data;using System.Text;using System.Windows.Forms;using libfuncs;namespace cwber public partial class ChromeWebBrowser : UserControl private ChromeApp chrome = null; ToolTip myToolTip = new ToolTip(); public ChromeWebBrowser() InitializeComponent(); ChromeWebBrowser.CheckForIllegalCrossThre

3、adCalls = false; private void ChromeWebBrowser_Load(object sender, EventArgs e) if (chrome = null) chrome = new ChromeApp(); Start(); #region 外部调用方法 libfuncs.DocumentCompletedEvent elementEvent1; libfuncs.FrameLoadStartEvent elementEvent2; libfuncs.FrameLoadEndEvent elementEvent3; libfuncs.FileDownl

4、oadingEvent fileDownloading; libfuncs.FileDownloadCompletedEvent fileDownloaded; libfuncs.ComponentInitialized componentInitialized; libfuncs.ToolTipEventListener toolTipEvent; public void Start() if (chrome != null) chrome.Dock = DockStyle.Fill; if (componentInitialized = null) componentInitialized

5、 = new libfuncs.ComponentInitialized(componentInitializedEvent); chrome.RegisterEvent(componentInitialized); Controls.Add(chrome); if (elementEvent1 = null) elementEvent1 = new libfuncs.DocumentCompletedEvent(documentComplete); chrome.RegisterEvent(elementEvent1); if (elementEvent2 = null) elementEv

6、ent2 = new libfuncs.FrameLoadStartEvent(frameStartStart); chrome.RegisterEvent(elementEvent2); if (elementEvent3 = null) elementEvent3 = new libfuncs.FrameLoadEndEvent(frameLoadEnd); chrome.RegisterEvent(elementEvent3); if (fileDownloading = null) fileDownloading = new libfuncs.FileDownloadingEvent(

7、this.downloading); chrome.RegisterEvent(fileDownloading); if (fileDownloaded = null) fileDownloaded = new libfuncs.FileDownloadCompletedEvent(this.downloaded); chrome.RegisterEvent(fileDownloaded); if (toolTipEvent = null) toolTipEvent = new libfuncs.ToolTipEventListener(this.ShowToolTipText); chrom

8、e.RegisterEvent(toolTipEvent); chrome.Visible = true; chrome.BringToFront(); /* * 描述:释放浏览器 */ public void Free() elementEvent1 = null; elementEvent2 = null; elementEvent3 = null; fileDownloading = null; fileDownloaded = null; componentInitialized = null; toolTipEvent = null; chrome.Dispose(); chrome

9、 = null; /* * 参数:Url 打开网页地址 * 描述:打开网址。 */ public void OpenUrl(string Url) if (chrome != null) chrome.Load(Url); /* * 参数:id 网页中的控件元素ID * 描述:根据元素ID获取元素的值,适用于Input,A标签元素 */ public string GetElementValueById(string id) return chrome = null ? : chrome.GetElementValueById(id); /* * 参数:id 网页中的控件元素ID, value

10、 元素新值 * 描述:为页面中元素赋予新值。 */ public void SetElementValueById(string id, string value) if (chrome != null) chrome.SetElementValueById(id, value); public delegate void TCallBackElementEventListener(); private List elementEventList = new List(); /* * 描述:附加元素的侦听事件。当该元素触发附加事件时,则执行TCallBackElementEventListen

11、er委托方法 */ public void AppendElementEventListener(string id, string eventName, TCallBackElementEventListener callFunc) libfuncs.ElementEventListener elementEvent = new libfuncs.ElementEventListener(callFunc); elementEventList.Add(elementEvent); chrome.AddElementEventListener(id, eventName, elementEve

12、nt); /* * 描述:向页面中注入并执行脚本。 */ public void ExecuteScript(string script) if (chrome != null) chrome.ExecuteScript(script); public object EvaluateScript(string script) if (chrome != null) return chrome.EvaluateScript(script); else return null; /* * 描述:计算文件单位。用于文件下载。 */ private string CompareFileSize(Int

13、64 size) /计算K,M单位 string strTotalSize = string.Empty; if (size = 1024 & size 1024 * 1024) strTotalSize = (size / 1024).ToString() + KB; else strTotalSize = (size / 1024 / 1024).ToString() + MB; return strTotalSize; #endregion #region 属性 public string Url get return chrome = null?:chrome.Core.Address

14、; #endregion #region 事件 /*控件初始化事件*/ public event EventHandler ComponentInitializedEventHandler; private void componentInitializedEvent() EventArgs e = new EventArgs(); if (ComponentInitializedEventHandler != null) ComponentInitializedEventHandler(this, e); /*页面加载完成事件*/ public event EventHandler Docu

15、mentCompletedEventHandler; private void documentComplete() EventArgs e = new EventArgs(); if (DocumentCompletedEventHandler != null) DocumentCompletedEventHandler(this, e); /*Frame加载完成事件,这里的Frame可以是页面本身,也是iFrame元素*/ public event EventHandler PageLoadFinishEventHandler; private void frameLoadEnd() Ev

16、entArgs e = new EventArgs(); if (PageLoadFinishEventHandler != null) PageLoadFinishEventHandler(this, e); /*Frame加载开始事件,这里的Frame可以是页面本身,也是iFrame元素*/ public event EventHandler PageLoadStartEventHandler; private void frameStartStart() EventArgs e = new EventArgs(); if (PageLoadStartEventHandler != nul

17、l) PageLoadStartEventHandler(this, e); /*下载中事件,不开放该事件*/ Form downloadForm = null; private void downloading(Int64 totalSize, Int64 loadedSize) string strTotalSize = CompareFileSize(totalSize); string strLoadedSize = CompareFileSize(loadedSize); if (downloadForm = null) downloadForm = new Form(); down

18、loadForm.Text = 下载中; downloadForm.Width = 280; downloadForm.Height = 150; downloadForm.MaximizeBox = false; downloadForm.MinimizeBox = false; downloadForm.ControlBox = false; downloadForm.StartPosition = FormStartPosition.CenterScreen; Label label = new Label(); label.Left = 20; label.Top = 50; labe

19、l.Width = 250; label.Text = 已下载: + strLoadedSize + / + strTotalSize; downloadForm.Controls.Add(label); downloadForm.Show(); downloadForm.BringToFront(); foreach (Control c in downloadForm.Controls) if (c is Label) Label label = (Label)c; label.Text = 已下载: + strLoadedSize + / + strTotalSize; label.Up

20、date(); downloadForm.Update(); /*下载完成事件,不开放该事件*/ private void downloaded() if (downloadForm != null) downloadForm.Close(); downloadForm = null; /*消息提示事件,不开放*/ private void ShowToolTipText(string text) if (chrome = null) return; if (string.IsNullOrEmpty(text) myToolTip.RemoveAll(); return; /保证每行40个字

21、int len = text.Length; int offset = 40; int count = len / offset; for (int i = 1; i = count; i+) text = text.Insert(offset * i, n); myToolTip.ShowAlways = false; myToolTip.UseAnimation = true; myToolTip.UseFading = true; /t.SetToolTip(button1, text); Point p = Control.MousePosition; Point p1 = this.

22、PointToClient(p); myToolTip.Show(text, chrome, p1.X+20, p1.Y+10); #endregion 重点是libfuncs中的libfuncs.h、ChromeApp.h、ChromeApp.cpp、ClientAdapter.h、ClientAdapter.cpp五个文件,实现方法都在里面,其他的文件基本都是接口文件。我自己只根据项目实际需求来做的功能,接口没有全部实现。一、ChromeWebBrowser.Net 下载与使用ChromeWebBrowser.Net项目包含三个包,分别是:浏览器核心:libfuncs,主要处理浏览器布局、

23、解释、事件、命令等,源代码使用vs2008编译;dotNet桌面控件:cwber,是浏览器在界面载体控件,面向开发者,提供与浏览器交互的各种函数和事件,源代码使用vs2008编译;例子:example,描述了如果使用cwber控件,源代码使用vs2010编译,也可以自己重做例子,我只是为了验证在vs2010下好不好用;例子中包含了cwber.dll和libfuncs.dll。下载地址:最新版本:cwber2013.08.08:包含了cwber和example;cwber2013.08.08.2:包含libfuncs;二、ChromeWebB Release v1.01源码地址:新发的版本中包含

24、了以下函数:1. 设置语言 SetLanguage2. 为浏览器设置cookie保存路径 SetCookiePath3. 全选 SelectAll4. 复制 Copy5. 粘贴 Paste6. 重载 Reload7. 打印 Print8. 查看源码 ViewSource9. 加载Html文本 LoadHtml10. 注入JS脚本 ExecuteScript11. 向前 GoForward12. 回退 GoBack13. 是否能前进 canGoForward14. 是否能后退 canGoBack15. 打开URL地址 OpenUrl16. 获取元素的值 GetElementValueById17

25、. 元素赋予新值 SetElementValueById18. 附加元素的侦听事件。当该元素触发附加事件时,则执行TCallBackElementEventListener委托方法 AppendElementEventListener包含的事件:1. 控件初始化事件 ComponentInitializedEventHandler2. 页面加载完成事件 DocumentCompletedEventHandler3. 加载开始事件 PageLoadStartEventHandler4. 加载完成事件 PageLoadFinishEventHandler三、ChromeWebB v1.02 增加缓

26、存数据库支持源码地址:在1.02版本增加缓存数据库的支持,缓存数据库是使用SQLite。cwber:增加CacheDB类操作SQLite.libfunc:增加JsExtendHandler对JS方法的响应。下面建立html文件来测试,主要内容:function myclick() alert(cachedb.Connect(testdb);function myexecute() cachedb.Execute(create table mytable(column1 int,column2 int); cachedb.Execute(insert into mytable values(1,

27、2); cachedb.Execute(insert into mytable values(2,3); cachedb.Execute(insert into mytable values(3,4);function myquery() var res = cachedb.Query(select * from mytable); alert(res); var item = JSON.parse(res); alert(item.rows0.column1);function myclose()cachedb.Close();四、ChromeWebB 1.0.3发布源码地址:感谢众多小伙伴们的关注和支持,我现在建立一个讨论QQ群:343517844,希望大家多提意见。在1.0.3版本中针对网友提出的问题进行修改,主要修改内容:1、增加了JavaScript方法:CallCSharpMethod 在JS中调C#方法。原形定义:string CallCSharpMethod(s

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1