登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 首页 >> SoftHub关联区 >> SoftHub关联区 >> 主题: 纯 c 的 cef 示例    [最新]
纯 c 的 cef 示例
guest
浏览(0) - 2019-04-10 16:20:41 发表 编辑

关键字:

[2019-04-11 15:37:37 最后更新]

纯 c 的 cef 示例

https://github.com/cztomczak/cefcapi/blob/master/examples/main_win.c

https://bitbucket.org/chromiumembedded/cef/wiki/UsingTheCAPI.md

https://github.com/cztomczak/cefcapi

搜索 bing 国际版本时找到的,baidu 是不行的,拆分得太散了

https://cn.bing.com/search?q=cef_context_menu_handler_on_before_context_menu&qs=n&form=QBLHCN&sp=-1&pq=cef_context_menu_handler_on_before_context_menu&sc=0-47&sk=&cvid=C229537ECA28473A8518AC222ED351B3


cef_context_menu_handler_on_before_context_menu  会被 baidu 拆分所以是找不到的,而这个是在 dcef3 调试时意外发现是 stdcall 的,明显是一个 dll 标准的相关函数,

所以一搜索就找到了相关的内容.这样就可以用于纯 C 环境了.

>起因其实是查找 decf3 中的右键菜单 'Inspect Element' 是哪里来的,搜索源码后发现是在 

procedure TMainForm.crmBeforeContextMenu(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; const model: ICefMenuModel);
begin
model.AddItem(CUSTOMMENUCOMMAND_INSPECTELEMENT, 'Inspect Element');
end;

加入的,断点这个位置就可以了.








guest  2019-04-10 16:22:31 发表 编辑

https://github.com/cztomczak/cefcapi/blob/master/include/capi/cef_context_menu_handler_capi.h
guest  2019-04-11 12:47:59 发表 编辑

cef wke miniblink

miniblink 使用了 wke 接口,去掉了音频视频

https://weolar.github.io/miniblink/doc-main.html

wke 也是国人开发的,使用的纯 C 接口,不过比较老,后来又有人维护,不过现在是停留在 cef 2011 年左右的水平.具体其 github 上有说明.

目前是在 https://github.com/cexer/wke

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



miniblink使用了wke的接口。wke的相关介绍可以google一下。

总的来说,miniblink的接口是纯C导出,只要使用wke.h即可加载。无需.lib。






guest  2019-04-11 12:52:42 发表 编辑

已经有了一个 decf 的开源浏览器

https://github.com/himStone/DcefBrowser



guest  2019-04-11 13:11:14 发表 编辑

机器翻译

此wiki页面提供有关如何在客户端应用程序中使用CEF C API的信息。

编者须知:未经CEF论坛或问题跟踪程序事先批准,对此wiki页面所做的更改可能会丢失或恢复。

介绍

CEF C API是libcef dll导出的基于C的接口。定义接口的CEFJCAPI.H头文件由CEF翻译器工具自动生成,并镜像CEF C++API结构。

使用C API的客户机应用程序示例可从以下网址获得:https://github.com/czarektomczak/cefcapi

参考计数

理解参考计数可能是使用CEF C API最困难的部分。CEF使用的参考计数概念与COM使用的概念非常相似。下面是一些要遵循的一般规则,以使您的引用计数尽可能无痛。

1。在将结构传递给它自己的成员函数时,不要增加/减少引用计数:

struct->call_func(struct,…);//没有对“struct”进行引用计数更改

2。在将一个结构作为参数传递给另一个结构之前,请增加该结构的引用计数:

//应该已经添加了对“some-other-struct”的引用

struct->call_func(…,some_other_struct,…);

三。在使用完结构后,当从其他地方接收它作为参数时,减少它的引用计数:

无效我的功能(…,一些其他结构,…)

{

//使用完“some-other-struct”后,将其移除

}

4。例如,在将处理程序传递到cef_create_browser()之前,添加对该处理程序的引用。当不再需要处理程序时,API将从处理程序中删除引用。

5。使用原子引用计数实现,因为可以从多个线程调用add-ref和release。WinAPI InterlockedCrement()和InterlockedDecrement()函数可用于此目的。

6。在为结构分配的release()回调函数中,当引用计数达到零时,处理程序应该删除自己。

//扩展CEF处理程序的自定义数据结构

typedef结构\u我的处理程序\u t{

cef_handler_t handler;//cef_handler_t成员在前面

//此处的自定义成员,包括引用计数变量

Myo-Hall;


//分配自定义数据结构(已初始化为零)

我的处理器(我的处理器)calloc(1,sizeof(我的处理器));

//适当设置cef_base_t的大小成员

my_handler->handler.base.size=sizeof(cef_handler_t);

//分配释放回调函数(以及其他回调函数)

my_handler->handler.base=my_版本;




//为我的处理程序释放回调函数实现

int cef_回调my_release(struct-cef_base_t*base){

//此强制转换有效,因为Cef_Base_t是

//CEF处理程序t和CEF处理程序t是我的处理程序t的第一个成员

我的处理器(我的处理器)基础;


//减少引用计数(存储为my_handler_t的自定义成员)

//当引用计数为零时释放my_handler_t结构

如果(参考计数为零)

免费(我的处理程序);

}

7。反转代码添加到结构的任何其他引用(例如,如果在处理程序实现中保留对CEF浏览器指针的引用)。释放引用的最后一个机会是在cef_handler_t::handle_before_window_closed()中。

8。当没有任何东西崩溃,并且在关闭时不再命中debugobjct断言时,您将知道您正确地处理了引用计数。




guest  2019-04-11 14:23:52 发表 编辑

原始的 cef 下载处:

http://opensource.spotify.com/cefbuilds/index.html

https://blog.csdn.net/ftpleopard/article/details/84870054

"一步步CEF(1)之编译libcef_dll_wrapper.lib

如果要从源码编译的话,估计硬盘和内存都有要求,这个我不想尝试,可以只能下载一份做c++的。(有空可以考虑源码编译的,不过目前这个必要)注意:下面工程为了简单,没有将lib的名字设置为libcef_dll_wrapper!"



guest  2019-04-11 15:37:37 发表 编辑

https://blog.csdn.net/zhangzq86/article/details/70171121

网易云信PC Demo





总数:6 页次:1/1 首页 尾页  
总数:6 页次:1/1 首页 尾页  


该采集也在以下书单中



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2017 clq, All Rights Reserved
CLQ工作室 版权所有