开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 19002|回复: 152
收起左侧

[易源码分享] 【教程】手把手教你做浏览器 ① 基础知识+多标签浏览器

    [复制链接]
发表于 2021-5-15 23:28:00 | 显示全部楼层 |阅读模式   山东省滨州市
分享源码
界面截图:
是否带模块: -
备注说明: -

简介                                                                                                                    


ACF(Admenri Cef Framework)是一个专为易语言编写的一套CEF接口转接框架,

旨在提供更好的CEF体验与提升易语言自身浏览器的运行效率,

ACF提供完全面向对象的编程环境,所有回调均以类的形式进行传递,

所有浏览器操作也均在类中完成。



    应用场合                                                                                                                  


①提供对某些ie不支持的网站的渲染


②webgl绘图渲染工作


③网络应用客户端


④交互式webui


⑤性能优异且支持H5的网页浏览器



框架特性                           


①清晰的模块结构,便于理解的调用方式


②使用类继承的方式自定义事件回调,不受参数类型限制


③支持多进程编程,可使用自带进程通信进行进程间传输消息


④更快的启动速度&加载速度,使用内存函数表映射极大裁剪了dll体积


⑤独家魔改Chromium85内核,加入对Google服务的支持与Widevine支持和Pointer lock&H265等




  开始学习                                                                                                     


Cef是谷歌工程师利用业余时间开发的一款基于Chromium的开源嵌入式框架,

旨在方便应用程序嵌入Chromium浏览器框架以实现H5特性,

由于基于Chromium修改,所以Cef也继承了相应的特性,其中包括:


①多进程模型

https://blog.csdn.net/u011304970/article/details/77678839


②主进程线程结构

http://www.360doc.com/content/13/0422/15/168576_280135766.shtml



这样,我们从窗口程序开始编写

(注意程序需要从 _启动子程序 启动)


1.png


①:ACF的类回调拥有两种传递方式:


a. 引用计数 -> 直接传递易语言类回调指针,可在易语言程序中随时获取回调数据,

但要注意类回调变量是否被销毁


b. 复制数据 -> 复制易语言类数据后传入ACF模块,对类的数据修改只能在调用子程序之前,

传递参数后对类数据的修改会无效化


②:前面提到的Chromium多进程结构,此处需要判断当前进程环境是否为浏览器的子进程,

如果为子进程则无需处理UI相关的代码,直接返回退出程序即可。


③:运行到此说明当前环境已经符合浏览器主进程的运行环境,

要想成功运行Chromium程序,我们需要对ACF进行初始化。


④执行完所有准备工作,就可以开始创建易语言的UI部分了


------------------------------------------------------------------------------


这里要介绍到ACF的一个重要特性:类回调


2.png

此时初始化的事件回调参数需要一个ACFApp类型的参数


QQ截图20210515225958.png

而我们输入的参数却是另一个类型


QQ截图20210515230043.png

但其实这个类继承自ACFApp,所以作为其子类作为参数不会报错,

这样的方式叫做类的继承,简单的说就是覆盖原先父类的方法以实现自定义功能


这里我们需要打开ACF的模块源码->找到对应的类回调->复制全部->更改名称并设置继承类

之后即可以变量的形式来使用类回调接收事件通知


AdmCef.e->类模块: ACFApp->全部复制->改成你想要的名字: 测试_回调->基类: ACFApp


全局变量 全局_回调事件 测试_回调 √


注意如果开头设置为类回调为引用计数,需要注意变量的销毁,此时不建议使用局部变量来作为类回调:

QQ截图20210515230739.png

QQ截图20210515230800.png

此时就会崩溃退出


--------------------------------------------------------------------------------------------


QQ截图20210515230941.png

初始化完毕,窗口UI创建完成后我们就可以进行创建浏览器的操作了

这里用到了前面提到的线程概念


※CEF中常用的线程有:


UI线程 -> 管理绝大部分浏览器功能,在多线程消息循环下异于主线程。


IO线程 -> 管理文件及网络下载读写,包括cookie操作



Renderer线程 -> 仅单进程模式有效,可直接在当前线程获取js返回值



关于 ACF.投递任务



QQ截图20210515231421.png

此方法可将某子程序在指定线程上进行运行,

作为ACF中唯一使用子程序指针的回调,

回调子程序需要严格遵守参数中指定格式进行定义:

QQ截图20210515231642.png

否则会导致无法平栈崩溃



--------------------------------------------------------------------------------------------------------




大致流程图


QQ截图20210515232412.png



本期工程源码(包含运行环境):


https://admenri.lanzoui.com/b0d2tp66h
密码:3e8c

源码文件为acf_browser.e

如有其他疑问可以加群一起讨论


QQ截图20210515221049.png

点评

lib***.dll 这个什么时候才开源   湖南省怀化市  发表于 2021-5-21 01:43
这个一定要赞,感谢大佬无私的分享,谢谢   广东省深圳市  发表于 2021-5-17 10:01

评分

参与人数 14好评 +11 精币 +18 收起 理由
ghost12 + 1 支持开源~!感谢分享
共舞 + 1 支持开源~!感谢分享
wg198300 + 1 可以配合录一下视频教程
zidoo + 1 + 1 支持开源~!感谢分享
llxx123 + 1 + 2 支持开源~!感谢分享
ノ朽默℡ + 1 + 1 感谢分享,很给力!~
世豪 + 1 + 2 感谢分享,很给力!~
kyo9766 + 2 感谢分享,很给力!~
天涯阿肯 + 1 + 2 感谢分享,很给力!~
李泽勇2 + 1 + 2 感谢分享,很给力!~
drogan2 + 1 + 1 感谢分享,很给力!~
FUYUEPC + 2 支持开源~!感谢分享
勾栏听曲 + 1 + 2 感谢分享,很给力!~
1301ok + 1 新技能已get√

查看全部评分


本帖被以下淘专辑推荐:

发表于 2023-11-16 17:55:31 | 显示全部楼层   江西省南昌市
666666666666666666666666666666666666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:11% (1/9)

签到天数: 2 天

发表于 2023-10-16 23:25:13 | 显示全部楼层   上海市上海市
yangjinmu 发表于 2023-10-16 23:24
水星浏览器咋打不开   是嵌入我的作品中  就无效了?也没有什么提示   就没有什么显示 ...

你好   请问   水星浏览器   有没有QQ群?  麻烦大家推荐一下  十分万谢
回复 支持 反对

使用道具 举报

结帖率:11% (1/9)

签到天数: 2 天

发表于 2023-10-16 23:24:06 | 显示全部楼层   上海市上海市
水星浏览器咋打不开   是嵌入我的作品中  就无效了?也没有什么提示   就没有什么显示
回复 支持 反对

使用道具 举报

发表于 2023-2-10 13:33:36 | 显示全部楼层   湖南省长沙市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:81% (26/32)

签到天数: 2 天

发表于 2022-5-15 03:01:30 | 显示全部楼层   上海市上海市
欢迎常来帮助新人,谢谢~
回复 支持 反对

使用道具 举报

结帖率:81% (26/32)

签到天数: 2 天

发表于 2022-4-7 00:03:09 | 显示全部楼层   上海市上海市
很好很强悍,坚持下去哦~
回复 支持 反对

使用道具 举报

结帖率:81% (26/32)

签到天数: 2 天

发表于 2022-2-22 14:02:39 | 显示全部楼层   上海市上海市
全论坛易友发来贺电
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2022-2-9 21:11:42 | 显示全部楼层   广西壮族自治区柳州市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:81% (26/32)

签到天数: 2 天

发表于 2022-2-5 01:01:05 | 显示全部楼层   上海市上海市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表