当前位置: 首页 > news >正文

Miniblink 入门

miniblink官网:入门之前强烈建议将Miniblink介绍仔细看一遍。

MB内核组件标准版接口文档:这里列举了所有的api以及简单的说明,但是本人建议还是看wke.h更方便,里面都是宏实现的,直接搜相关函数即可。

mb demo下载和参考:里面有说明文档,初步可以看看文档和运行了解一下。

miniblink概括

  1. miniblink是单进程程序与cef多进程相比简单很多。
  2. mini 包很小,方便集成
  3. 为了使用devTool,应该将mb demo目录下的front_end拷贝到工程一份
  4. 为了使用插件,应该将mb demo目录下的plugins拷贝到工程一份

js 调用C++函数并返回值

  1. 遵循WKE_CALL_TYPE 调用方式
  2. 遵循函数原型 jsValue WKE_CALL_TYPE xxxFun(jsExecState es, void* param)
//函数标准必须遵守WKE_CALL_TYPE 调用方式
jsValue WKE_CALL_TYPE OnMsg(jsExecState es, void* param)
{//获取参数个数jsArgCountif (0 == jsArgCount(es))return jsUndefined();//获取约定的参数,例如获取第一个参数,并假设参数为string,如果不是string则返回jsValue arg0 = jsArg(es, 0);//jsType type = jsArgType(es, 0);//if (JSTYPE_STRING != type) return jsUndefined();if (!jsIsString(arg0))return jsUndefined();path = jsToTempString(es, arg0);//同理获取更多参数//返回约定返回值 or Undefined//return jsStringW(L"OK");return jsInt();
}
  1. js绑定C++函数
#param1:js中调用的函数名称
#param2:c++中实现的的函数
#param3:自定义参数,对应OnMsg中的void* param
#param4:约定onMsg中需要输入的参数个数,可多但是不能少#该函数是全局的,绑定之后所有webview的js都可以调用eMsg,包括新打开的webview
wkeJsBindFunction("eMsg", &onMsg, nullptr, 5);
  1. js中调用绑定函数
<button onclick="eMsg('add')">js Call C++ function</button>

c++ 调用js函数并获取返回值

  1. js中声明函数,eg:js_add
function js_add(v1,v2){return v1 + v2;}
  1. C++通过jsCallGlobal调用js_add
int callJSAdd(wkeWebView webview)
{jsExecState es = wkeGlobalExec(webview);jsValue f = jsGetGlobal(es, "js_add");if (jsIsFunction(f)){return -1;}jsValue jVal[2];jVal[0] = jsInt(1);jVal[1] = jsInt(2);jsValue callRet = jsCallGlobal(es, f, jVal, 2);return jsToInt(es, callRet);
}

显示DevTool

#param1:wkeWebView 实例
#param2:调试器的路径,即front_end/inspector.htmlwkeShowDevtools(m_wkWebView, szPath, 0, 0);
void CMbWebView::ShowDevTool()
{wchar_t szPath[MAX_PATH] = _T("");GetModuleFileNameW(NULL, szPath, MAX_PATH);PathRemoveFileSpecW(szPath);PathAppendW(szPath, L"front_end");PathAppendW(szPath, L"inspector.html");if (_waccess(szPath, 00) != 0){wchar_t szBuf[1024] = L"";_snwprintf_s<1024>(szBuf, 1024, L"调试工具[%s]不存在", szPath);MessageBoxW(GetHwnd(), szBuf, L"错误提示", MB_OK);}else{wkeShowDevtools(m_wkWebView, szPath, 0, 0);}
}

其他的更多功能直接参考官方的mb demo

相关文章:

Miniblink 入门

miniblink官网&#xff1a;入门之前强烈建议将Miniblink介绍仔细看一遍。 MB内核组件标准版接口文档&#xff1a;这里列举了所有的api以及简单的说明&#xff0c;但是本人建议还是看wke.h更方便&#xff0c;里面都是宏实现的&#xff0c;直接搜相关函数即可。 mb demo下载和参…...

[python入门㊷] - python存储数据

目录 ❤ json.dump()存储数据 ❤ json.laod()读取数据 ❤ 保存和读取用户生成的数据 ❤ 重构 JSON(JavaScript Object Notation)格式最初是为JavaScript开发的&#xff0c;但随后成了一种常见格式&#xff0c;被包括Python在内的众多语言采用 ❤ json.dump()存储数据…...

Little Fighter:旺角——NFT 系列来袭!

《小朋友齐打交 2 (LF2) 》是一款流行的格斗游戏&#xff0c;由 Marti Wong 和 Starsky Wong 于 1999 年创作。这是一款非常容易上瘾的游戏&#xff0c;具有多种游戏模式、横向卷轴格斗系统以及 24 个具有复杂动作和连击的不同角色。这款游戏在世界范围内非常受欢迎&#xff0c…...

基础篇:01-微服务概述

1.单体应用与微服务架构区别 如上图左侧为单体应用架构。在传统单体应用中&#xff0c;所有功能模块都在一个工程中编码、部署&#xff0c;即使是集群部署&#xff0c;也只是单体应用的水平复制。 如上图右侧为微服务架构。在微服务架构的项目中&#xff0c;每个应用会按照领域…...

TC358775XBG替代方案|完美替代 TC358775XBG替代方案|低BOM成本DSI转LVDS方案CS5518

TC358775XBG替代方案|完美替代 TC358775XBG替代方案|低BOM成本DSI转LVDS方案CS5518 TC358775XBG芯片的主要功能是DSI到LVDS桥&#xff0c;通过DSI链路实现视频流输出&#xff0c;以驱动LVDS兼容的显示面板。该芯片支持单链路LVDS高达1366768 24位像素分辨率&#xff0c;双链路L…...

Android开发

前言&#xff1a;因为这学期选了手机APP开发这门课&#xff0c;所以还是写个博客记录一下学习过程&#xff0c;包括安卓开发和ios开发。用到的资料包括课程PPT&#xff0c;和我在网上找的一些视频和资料。 1.Andriod入门 XML&#xff1a;描绘应用界面 &#xff08;决定APP长什…...

virtualbox虚拟机导入到vmware esxi虚拟机

virtualbox导出的ova文件转换为ovf文件导入到vmware esxi虚拟机 1、下载安装程序 链接&#xff1a;https://pan.baidu.com/s/1pRP8MQswDSDecMB5eJGNYA?pwdmv2q 提取码&#xff1a;mv2q 双击VMware-ovftool-3.0.1-801290-win.x86_64.msi默认安装 2、在cmd中进入到Vware OVF…...

如何使用命名空间管理C++代码

在编写 C 代码时&#xff0c;管理代码组织和消除名称冲突是一个重要问题。 为了解决这个问题&#xff0c;C 提供了一种叫做命名空间的机制。命名空间可以将代码组织在一起&#xff0c;并防止不同模块间的名称冲突。 定义命名空间 首先&#xff0c;你需要在代码中声明命名空间…...

海思3559:BT656调试笔记

前言 海思3559a的sdk例子是没有提供BT1120和BT656视频接入的&#xff0c;但实际上硬件是可以支持接入的。不过前提是只支持逐行方式输入&#xff0c;不支持隔行视频&#xff0c;如果想输入PAL制式的隔行视频&#xff0c;请先用芯片转成逐行再接入。不知道是官方手册有意无意的忽…...

reactor之hooks

Hooks 是一个工具类&#xff0c;它提供了一些方法&#xff0c;用来在 Reactor 的各个阶段添加回调函数&#xff0c;进行全局性的操作。总体来说分为三类&#xff1a; 本部分算是reactor中比较高级的部分&#xff0c;建议在开始上手用reactor做项目前&#xff0c;大概知道有这么…...

单片AR眼镜Monocle揭秘:基于反射棱镜,重15g续航1小时

提问&#xff1a;一个戴近视眼镜的人&#xff0c;会愿意再同时戴一副AR眼镜吗&#xff1f;这个问题对于VR来说并不难&#xff0c;通常VR头显为镜框留出了空间&#xff08;一些Pancake VR自带屈光调节机制&#xff09;&#xff0c;因此二者并不冲突。然而AR眼镜体积更紧凑&#…...

计算机视觉框架OpenMMLab开源学习(五):目标检测实战

✨写在前面&#xff1a;强烈推荐给大家一个优秀的人工智能学习网站&#xff0c;内容包括人工智能基础、机器学习、深度学习神经网络等&#xff0c;详细介绍各部分概念及实战教程&#xff0c;通俗易懂&#xff0c;非常适合人工智能领域初学者及研究者学习。➡️点击跳转到网站。…...

SpringIOC推导IOC初步

了解准备 什么是Spring&#xff1f; Spring是一款轻量级的控制反转&#xff08;IOC&#xff09;和面向切面编程&#xff08;AOP&#xff09;的非入侵式开源框架 2002年Spring的前身interface21发布&#xff0c;随后在2004年3月24日正式更名发布Spring1.0版本Spring Frameword缔…...

Linux(centOS7)虚拟机中配置 vim

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是小童&#xff0c;Java开发工程师&#xff0c;CSDN博客博主&#xff0c;Java领域新星创作者 &#x1f4d5;系列专栏&#xff1a;前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…...

消息中间件-RocketMQ入门 消息发送的三种方式

消息中间件-RocketMQ入门 消息发送的三种方式消息中间件简介应用场景常用消息中间件RocketMQ核心概念入门案例-生产者和消费者代码逻辑消息发送的三种方式同步发送异步发送一次性消息消息中间件简介 应用场景 假设现在有订单微服务和积分微服务,正常请求流程之后是不是一个订…...

【FLASH存储器系列十九】固态硬盘掉电后如何恢复掉电前状态?

掉电分两种&#xff0c;一种是正常掉电&#xff0c;另一种是异常掉电。不管是哪种原因导致的掉电&#xff0c;我们都希望&#xff0c;重新上电后&#xff0c;SSD都需要能从掉电中恢复过来&#xff0c;继续正常工作。正常掉电恢复&#xff0c;这个好理解&#xff0c;主机通知SSD…...

Java知识点细节简易汇总——(7)面向对象编程(高级部分)

一、类变量、静态变量static static访问方式&#xff1a; public class VisitStatic {public static void main(String[] args) {//方法一://类名.类变量名//说明&#xff1a;类变量是随着类的加载而创建&#xff0c;所以即使没有创建对象实例也可以访问System.out.println(A.…...

阻塞式队列-生产者消费者模型

1.阻塞队列是什么 阻塞队列是一种特殊的队列. 也遵守 "先进先出" 的原则. 阻塞队列能是一种线程安全的数据结构, 并且具有以下特性: 当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素.当队列空的时候, 继续出队列也会阻塞, 直到有其他线程往队…...

引导滤波code

文章目录1. 原理概述2. 实验环节2.1 验证与opencv 库函数的结果一致2.2 与 双边滤波比较2.3 引导滤波应用&#xff0c;fathering2.3 引导滤波应用&#xff0c;图像增强2.4 灰度图引导&#xff0c;和各自通道引导的效果差异2.5 不同参数设置影响3. 参考引导滤波1. 原理概述 引导…...

Leetcode.2353 设计食物评分系统

题目链接 Leetcode.2353 设计食物评分系统 Rating &#xff1a; 1782 题目描述 设计一个支持下述操作的食物评分系统&#xff1a; 修改 系统中列出的某种食物的评分。 返回系统中某一类烹饪方式下评分最高的食物。 实现 FoodRatings类&#xff1a; FoodRatings(String[] foo…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...