精易论坛

标题: 【教程】手把手教你做浏览器 ① 基础知识+多标签浏览器 [打印本页]

作者: Admenri    时间: 2021-5-15 23:28
标题: 【教程】手把手教你做浏览器 ① 基础知识+多标签浏览器

简介                                                                                                                    


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



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

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




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


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

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


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

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


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

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


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

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


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


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


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



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



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



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

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


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

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


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


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


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



此时就会崩溃退出


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



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

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


※CEF中常用的线程有:


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


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



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



关于 ACF.投递任务




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

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

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


否则会导致无法平栈崩溃



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




大致流程图





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


[hide=d8]https://admenri.lanzoui.com/b0d2tp66h
密码:3e8c

源码文件为acf_browser.e

如有其他疑问可以加群一起讨论[/hide]


QQ截图20210515221049.png (1.14 MB, 下载次数: 12)

QQ截图20210515221049.png

作者: 若在頞然    时间: 2021-5-16 02:19
瑟瑟发抖
作者: wmv520    时间: 2021-5-16 02:50
666666666666666666666666666666666
作者: Delude    时间: 2021-5-16 03:12
这个可以噢
作者: futiem    时间: 2021-5-16 06:23
可以噢可以噢可以噢
作者: FBI追风大大    时间: 2021-5-16 07:38
可以噢可以噢
作者: bxfa    时间: 2021-5-16 08:19
支持支持
作者: Toomy    时间: 2021-5-16 08:55
可以用来填表吗
作者: JhTseng    时间: 2021-5-16 09:16
支持支持
作者: sa123123    时间: 2021-5-16 09:19
厉害了,感谢分享
作者: 撩唇笔    时间: 2021-5-16 09:24
厉害了,感谢分享
作者: 杰西卡技术传媒    时间: 2021-5-16 09:34
厉害了,感谢分享
作者: 期盼i    时间: 2021-5-16 09:37
牛逼哄哄。支持支持。
作者: fengshou    时间: 2021-5-16 09:40
楼主大佬,nb,支持!
作者: 1301ok    时间: 2021-5-16 09:55
学习啦,谢谢了
作者: 菜就多多练    时间: 2021-5-16 10:03
有没有填表例子丫丫
作者: menghan    时间: 2021-5-16 10:05
厉害了,感谢分享
作者: 学习122    时间: 2021-5-16 10:07
感谢分享,支持
作者: Deyl    时间: 2021-5-16 10:09
我来看看好东西
作者: xiazai520    时间: 2021-5-16 10:11
新技能已get√
作者: 深爱者    时间: 2021-5-16 10:13
我来看看好东西
作者: 小墨科技    时间: 2021-5-16 10:27
强烈支持楼主
作者: zjkhzx    时间: 2021-5-16 10:28
111111111111
作者: xinling99    时间: 2021-5-16 10:31

强烈支持楼主
作者: zyjun01    时间: 2021-5-16 10:54

感谢分享,支持
作者: 元老    时间: 2021-5-16 10:54
想看看浏览器控制台怎么写
作者: oycs429    时间: 2021-5-16 10:55
让 江小白 来看看帖子里藏了啥好东西~~~
作者: 13145313103    时间: 2021-5-16 10:57
6666666666666666666666
作者: yuan6805053    时间: 2021-5-16 11:18
学习一下
作者: yanghu    时间: 2021-5-16 11:23

作者: aismy    时间: 2021-5-16 11:25
很棒,支持
作者: 我們還太嫩    时间: 2021-5-16 11:44
建议大佬用markdown书写 教程
作者: kentfung    时间: 2021-5-16 11:50
不知道支不支持指纹修改和带密码的socks5呢?
作者: 天雨时晴    时间: 2021-5-16 12:14
必须支持
作者: yoobaby    时间: 2021-5-16 13:41
看的多标签。
作者: wshihuxue1    时间: 2021-5-16 13:43
奈斯 看看高手操作!
作者: zyjun01    时间: 2021-5-16 13:58
这个可以单进程吗
作者: 扣扣    时间: 2021-5-16 14:48
不管东西咋样 还是先谢谢了
作者: zifeiyu    时间: 2021-5-16 15:06
.....................
作者: ak360    时间: 2021-5-16 15:45
ACF(Admenri Cef Framework)是一个专为易语言编写的一套CEF接口转接框架,
作者: 哥只是一个传说    时间: 2021-5-16 15:53
路过,也不知道能不能播放视频和电影一类的
作者: 想学易语言    时间: 2021-5-16 16:30
        新技能已get√
作者: 说的改变    时间: 2021-5-16 16:38
1111111111111111111111111111111
作者: zzzzzzzz88    时间: 2021-5-16 16:56
学习一下!!!!
作者: 登峰望岳    时间: 2021-5-16 17:25
感谢分享,很给力!~
作者: 枫眼    时间: 2021-5-16 17:35
66666666666666666
作者: 我是太子    时间: 2021-5-16 18:16
感谢分享,很给力!
作者: daliubeyond    时间: 2021-5-16 18:48
学习学习啊啊
作者: cgscct    时间: 2021-5-16 19:23
太棒了 必须支持
作者: snak2020    时间: 2021-5-16 19:37
谢谢分享,学习
作者: ljx111    时间: 2021-5-16 19:50
感谢分享~~~~~~~~~~~~~~~~~~~~~~~~~!
作者: leetour    时间: 2021-5-16 21:30
新技能   下载学习下
作者: 痴情公子    时间: 2021-5-16 21:35
多标签浏览器
作者: kk2apple    时间: 2021-5-16 22:23
这里有源码分享吗?大佬
作者: leiwawa001    时间: 2021-5-16 22:38
谢谢分享。
作者: snufgpl    时间: 2021-5-17 00:22
多标签浏览器
作者: 列明    时间: 2021-5-17 00:31
瀏覽器已經是一個足夠臃腫的工程了!
作者: 网络注册会员    时间: 2021-5-17 07:20

谢谢分享
作者: drogan2    时间: 2021-5-17 09:14
让 江小白 来看看帖子里藏了啥好东西~~~
作者: Q:353971112    时间: 2021-5-17 10:29
感谢开源, 支持原创
作者: 910265444    时间: 2021-5-17 11:18
感谢大佬的教程和分享开源
作者: 飞飞怕冷    时间: 2021-5-17 11:41
下来学习一下
作者: yaokui6659    时间: 2021-5-17 12:19
教程】手把手教你做浏览器 ① 基础知识+多标签浏览器
作者: 天涯阿肯    时间: 2021-5-17 13:04
给大佬递茶。。。
作者: 阳明先生    时间: 2021-5-17 13:12
给大佬递茶。。。
作者: 天霸动霸tua    时间: 2021-5-17 13:46
6666666666666666666
作者: lxh1230    时间: 2021-5-17 17:30
666666666666666666666666666666666666666666
作者: 猥琐小胖子    时间: 2021-5-17 17:53
感谢分享
作者: 蓝大侠    时间: 2021-5-17 17:54
看看怎样
作者: nw828622hr    时间: 2021-5-17 18:39
这个一定要赞,感谢大佬无私的分享
作者: bianyuan456    时间: 2021-5-17 18:48
感谢你给易语言造轮子,除了收费的猫头鹰我没用过没法评论之外,就你厉害了
作者: dazui001    时间: 2021-5-17 19:04
哇爱了爱了
作者: 芒果一号    时间: 2021-5-17 19:04
感谢大佬
作者: f100long    时间: 2021-5-17 20:04
努力学习 天天向上

作者: 昨夜的雨    时间: 2021-5-17 20:52
感谢分享
作者: aini1wna2    时间: 2021-5-17 21:34
        感谢分享,很给力!~
作者: yaokui6659    时间: 2021-5-17 23:57
问个,小白问题,我怎么手动提取查看本浏览器所产生的cookie
作者: fangming01    时间: 2021-5-18 06:43
111111111111111111111111
作者: 圣帝    时间: 2021-5-18 06:46
66666666666
作者: 932386905    时间: 2021-5-18 08:51
这个可以更改底层吗?
作者: 非常猥锁    时间: 2021-5-18 09:04
这必须点赞!牛逼
作者: Best149    时间: 2021-5-18 11:26
谢谢分享
作者: 谈谈的味道    时间: 2021-5-18 11:32
这可是个好东西...
作者: 布鲁惠斯    时间: 2021-5-18 13:58
感谢分享,很给力!~
作者: sd3970566    时间: 2021-5-18 17:23
这么屌吗
作者: 花间一壶酒    时间: 2021-5-18 17:26
收下本期工程源码
作者: other    时间: 2021-5-18 18:20
有没有最最最最简单的
作者: 442497277    时间: 2021-5-18 20:12
新技能已get√
作者: yyh    时间: 2021-5-18 21:07
感谢分享OK
作者: 329948513    时间: 2021-5-18 21:08
那就发过火
作者: zwx周    时间: 2021-5-18 21:12
6666
作者: hbe    时间: 2021-5-18 21:55
大佬6666666
作者: SSe    时间: 2021-5-18 22:29

作者: linfenfang    时间: 2021-5-18 22:41
隐藏了 什么 支持一下
作者: 7866313    时间: 2021-5-19 01:05
我人数我的爱迪生阿大声道的大声道撒达到adad对对对
作者: zzzyf    时间: 2021-5-19 08:36
#在这里快速回复# 这个一定要赞,感谢大佬无私的分享,谢谢
作者: azhi    时间: 2021-5-19 09:22
RE: 【教程】手把手教你做浏览器 ① 基础知识+多标签浏览器 [修改]
作者: jeson998    时间: 2021-5-19 11:16
看看吧,搞个私人浏览器用
作者: MC小月    时间: 2021-5-19 12:24
感谢开源
作者: csmdk    时间: 2021-5-19 13:29
看看浏览器多少m




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4