CEF Chrome Embedded Framework 小记

CEF Chrome JS绑定,持有, 互相调用



Chromium 的进程

browser(没有type参数时默认为browser进程)

•renderer(kRendererProcess)

•plugin(kPluginProcess)

•ppapi-broker(kPpapiBrokerProcess)

•ppapi(kPpapiPluginProcess)

•sandbox-ipc(kSandboxIPCProcess)

•utility(kUtilityProcess)

•zygote(kZygoteProcess,linux)

•gpu-process(kGpuProcess)


本地Scheme |   加载


本地插件绑定

全局有效


本地JS – C++互相调用


OnContextCreated 位置可以添加绑定

在OnContextCreated中 创建 对应的Function、Object、等等自定义的变量,之后绑定在context->GetGlobal() 这个对象之中(通过 context->GetGlobal()->AddItem())

其实就是浏览器JS端的 window 对象(context->global)

这样,在浏览器内就可以通过 window 内的变量(函数、Object)来调用C++的内容了


侵删

例子:

自定义CEF小游戏通过C++层面来进行微信认证的流程图,


转载注明作者(微信:lugt00),谢谢


其中为了防止破解还特定设定了全新的Scheme,用来代替网址前面的http, https,结果实际上是打开本地的游戏文件来加载页面内容,加载可以通过文件读写等操作(也就是可以压缩、加密、防篡改)。

URL解析流程

那异步请求怎么办,C++如何持有JS的Callback?

这里我们需要来看看CEFMessageRouter 

CEF内部有一个在render进程上面跑的消息处理函数,通过onQuery可以实现后台上网、后台WebSocket等诸多神奇的效果,可以参考下面这张图

喜欢本文就在下面点一下咯!

你可能感兴趣的:(CEF Chrome Embedded Framework 小记)