一步步CEF(2)之编译ceflicent

2023-05-16

一步步CEF(1)之编译libcef_dll_wrapper.lib已经提供了c++的静态库,这次要将cefclient编译出来。这里要说明一下,如果仅仅将cefclient编译的话,没什么好说的,直接按上文提示拉进来,将相应的设置也类似设置就可以了。这里的cefclient我需要做一个程序内部通讯,需要用到CreateMapping,OpenMapping等(这个是共享内存,自行搜索,这里不介绍),因为需要处理实时的命令,那么就不能用“CefRunMessageLoop();”那么简单。

1.新建一个subProcess的工程,写一个很简单的程序,应该是用于渲染之类的。

SubProcess

这里的sub_process.cc可以直接将{CEF_SRC_Folder}\tests\cefclient\cefclient_win.cc复制过来,和上图一样写一个“int SubProcess(HINSTANCE hInstance, int nCmdShow)”函数,然后在wWinMain下调用“return client::SubProcess(hInstance, nCmdShow);”。这样生成一个subProcess.exe(后面主程序会自动调用的,Debug的时候不一定会用到,但是Release版本一定会)

降低编译难度,我在subProcess目录下新建了SRC子目录,然后将{CEF_SRC_Folder}\tests和{CEF_SRC_Folder}\include复制到SRC下面

subprocess files

然后将cefclient_win.cc,改为sub_process.cc,如上述改写。

再将tests下面的cefclient和shared的文件都拉进工程。配置大部分跟编译libcef_dll_wrapper.lib差不多,我贴一下截图,不再细说。注意:上图中的bmp.cpp和logger.cpp和MsgHandler.cpp属于个人测试,与subProcess无关。

sub1

 

包含目录=“$(SolutionDir);$(SolutionDir)$(ProjectName)\SRC;$(IncludePath)”

库目录=“$(SolutionDir)$(Configuration)\;$(LibraryPath)”

sub2

 

附加包含目录=“$(SolutionDir)$(Configuration)\;%(AdditionalIncludeDirectories)”

sub3

“预处理器”,“代码生成”,“高级”跟一步步CEF(1)之编译libcef_dll_wrapper.lib定义一样(不上图)

2.根据1的提示一样,新建一个CEF_APP项目,这个是主程序,我将celfclient_win.cc改为cef_app.cc,里面的实现也改了不是,这里面实现程序通讯功能。(属性和subProcess一样,我新建另一份,主要是不想和subProcess弄一块,可以加些自己的代码进去)

cef app 1

除了cef_app.cc和subProcess工程是不是很像?^_^。。。。

2-1.cef_app.cc代码直接沿用cefclient_win.cc,先要干掉“message_loop->Run();”,改为“while(1){...;CefDoMessageLoopWork();Sleep(10)}”,在循环里面实现实时监测共享内存的变化(本工程的实际情况)。

m1

2-2.将“int exit_code = CefExecuteProcess(main_args, app, sandbox_info);
        if (exit_code >= 0)
        {
        return exit_code;
        }”干掉,不然经常进不到while循环去,尤其是通过dll调用cef_app.exe的情况!但是仅仅删掉这个不能解决问题,因为这里有控制subProcess的进程部分代码,原代码是调用同名exe以达到启动渲染进程的,我们要手动给它造一个。

在“context->PopulateSettings(&settings);”后加上“
        wchar_t subProcessPath[MAX_PATH] = { 0 };
        GetModuleFileNameW(hInstance, subProcessPath, MAX_PATH);
        *(wcsrchr(subProcessPath, L'\\') + 1) = L'\0';
        const wchar_t *SUB_PROCESS_NAME = L"subProcess.exe";
        wcsncat_s(subProcessPath, MAX_PATH, SUB_PROCESS_NAME,
            wcslen(SUB_PROCESS_NAME));
        cef_string_from_wide(subProcessPath, MAX_PATH, &(settings.browser_subprocess_path));
”;

m2m3

这样改写,subProcess.exe就变成渲染进程,cef_app.exe就是主进程。经过这两处修改,就可以打造一个实时可控的cef程序,很有意思。

哦,差点忘记了,这样直接编译,虽然成功了,但是不能弹窗的。这个要先设置“属性->链接器->系统”,“子系统”=“窗口”;

system

第二就是要改root_window_win.cc的函数“void RootWindowWin::CreateRootWindow(const CefBrowserSettings& settings,bool initially_hidden) ”

create win

这个是读取源码里的资源的标题和类名,但是在我重新新建项目,如果按原代码的话,那肯定会得到空字符串,然后就创建窗口失败!(window_class很重要,为空的话,肯定不行的)

 

不过有点遗憾的是,我不能上传修改好的程序上来,属于公司的资源,暂时不能公开,有空的话,我改好一份精简的再上传。

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一步步CEF(2)之编译ceflicent 的相关文章

  • cef中js与C++交互

    cefquery方式交互 前端使用 window span class token punctuation span span class token function cefQuery span span class token punc
  • CEF方面的研究(五) CEF中C++与JS交互

    C 43 43 与JS的交互 xff0c 相信不用多说 xff0c 必是精髓 在写这篇博客之前 xff0c 我不得不说之前遇到的一个问题 xff1a 不管怎么搞 xff0c 都不能回调到C 43 43 函数中 原因是什么呢 xff1f 我没
  • CEF:C++和JS交互

    C 43 43 和JS交互V8原理 xff1a https github com fanfeilong cefutil blob master doc content register v8 extension md CEF一个页面的框架如
  • Go 在 Windows 上用户图形界面 GUI 解决方案 Go-WinGUI 国产(使用cef 内核)

    Go 在 Windows 上用户图形界面 GUI 解决方案 Go WinGUI 国产 xff08 使用cef 内核 xff09 参考文章 xff1a xff08 1 xff09 Go 在 Windows 上用户图形界面 GUI 解决方案 G
  • CEF中JavaScript与C++交互

    在CEF里 xff0c JS和Native xff08 C C 43 43 xff09 代码可以很方便的交互 xff0c 这里https bitbucket org chromiumembedded cef wiki JavaScriptI
  • 一步步CEF(2)之编译ceflicent

    一步步CEF xff08 1 xff09 之编译libcef dll wrapper lib已经提供了c 43 43 的静态库 xff0c 这次要将cefclient编译出来 这里要说明一下 xff0c 如果仅仅将cefclient编译的话
  • CEF(Chromium Embedded Framework)使用说明书

    CEF使用说明书 目录 1 前言 1 1 CEF的作用 1 2 CEF的下载和编译 1 3 CEF结构 1 3 1 CEF进程和窗口之间的结构关系 1 3 2 Renderer进程的实现结构 1 3 3 browser进程的实现结构 1 4
  • cef相关

    一 应用 在Windows下进行浏览器相关的开发 1 使用IE相关的接口 IE控件等进行开发 Windows提供了丰富的接口用起来也是非常方便的 缺点 例如XP还有很多人使用 它的IE版本可能比较旧 对一些新的网页特性可能支持的不好 2 使
  • cef浏览器加载过程实测ILoadHandler和IRequestHandler

    针对方法GetResourceRequestHandler 获取资源请求过程中 会多次发生请求 不知道何时加载完的问题 IRequestHandler 没有了OnResourceLoadComplete 和OnBeforeResourceL
  • 01-Chrome架构:仅仅打开了1个页面,为什么有4个进程

    在开始之前 我们一起看下 Chrome打开一个页面需要启动多少进程 你可以点击Chrome浏览器右上角的 选项 菜单 选择 更多工具 子菜单 点击 任务管理器 这将打开Chrome的任务管理器的窗口 如下图 和Windows任务管理器一样
  • Cef经典N大问题

    1 cef启动 退出的时候怎么崩溃了 答 如果是启动时崩溃 请看资源目录是否文件都齐全 退出的话见https github com fanfeilong cefutil blob master doc CEF Close md 如果是cen
  • 自编译已集成视频播放功能CEF3.3239版本库 (官方版本编译类似)详解介绍步骤(含编译错误解决)

    工具及编译环境 VS2015 Cmake cmake官网 https cmake org CEF工程官网 https cef builds spotifycdn com index html 1 下载CEF源码 下面的源码是已经集成了播放视
  • cef3:禁止win10高dpi下cef对内部网页进行缩放

    cef对内部网页进行缩放
  • Linux下编译CEF源码及交叉编译

    Linux下编译CEF chromium源码及交叉编译 官方编译文档 https bitbucket org chromiumembedded cef wiki MasterBuildQuickStart markdown header l
  • Qt浏览器开发:关于CEF开发知识点以及QCef开发原理与使用

    开发环境 VS2015 Qt5 9 关于CEF CEF全称是Chromium Embedded Framework 它是Chromium的Content API的封装库 基于Google Chromium 的开源项目 而Google Chr
  • QCefView源码优化

    QCefView项目源码的构建部分这里就不赘述了 有问题的朋友可以回到 QCefView 1 CMAKE项目 库文件生成和项目测试 查看相关介绍 本次优化主要包括以下几个部分 1 设置部分 关闭代理服务器 关闭同源策略 使用系统flash等
  • qt集成cef QWidget

    编译libcef dll wrapper 假设你已经编译出了libcef dll wrapper lib Debug和Release版本 并且对应版本的程序集类型分别是 MDd和MD qt的运行时库是MDd类型的 因此cef3编译的时候也应
  • xe7 安装chrome组件(CEF4Delphi)

    缘起 大屏项目需要用到chrome组件 但为了实现firemonkey的矢量和强大的图形功能 所以只能重新在xe7中安装chrome组件 碰到了一些问题 都一 一化解了 将整个过程记录下来 以供大家采用 1 下载CEF4Delphi mas
  • cef编译

    按照大神的一遍过 具体过程非常详细 链接https kefong blog csdn net article details 119908780 spm 1001 2101 3001 6650 2 utm medium distribute
  • 禁用CEF跟随系统的DPI缩放

    方法1 为程序添加启动参数 high dpi support 1 force device scale factor 1 1 在桌面上右键Chrome图标 选择属性 2 在目标一栏中增加自定义参数 force device scale fa

随机推荐

  • PHP 图片去除水印 去除logo

    使用插件 ffmpeg 点这里 不使用插件 也可以 lt php function CLEAR ICO filename savename Clear W Clear H Clear X Clear Y filename 61 读取图片名
  • Apache Options指令详解

    Options指令是Apache配置文件中一个比较常见也比较重要的指令 xff0c Options指令可以在Apache服务器核心配置 server config 虚拟主机 配置 virtual host 特定目录配置 directory
  • 基于VC开发epoll/linux 程序指南

    1 概述 3 2 背景 3 3 总体思路 3 4 功能特点 4 5 开发工具和操作系统要求 4 5 1 Windows VC 4 5 2 linux g 43 43 4 6 开发人员要求 5 7 Linux针对epoll移植 5 8 VC工
  • Qt Creator闪退解决办法

    Qt Creator闪退解决办法 Qt 今天突然出现所有插件无法打开的问题 xff0c 找了很久的资料也没解决 只能重装QtCreator 结果一点开QtCreator过不了一分钟 xff0c 就闪退 看到windows记录的问题原因是Qt
  • QScrollArea qss样式设置失效问题

    QScrollArea通过样式改变背景色 遇到设置QScrollArea qss无法生效问题 xff0c 网上没找到合适解决办法 xff0c 查看QScrollArea qt4源码后发现 xff0c 增加如下代码之后 xff0c qss正常
  • Android下打印调试堆栈方法

    打印堆栈是调试的常用方法 xff0c 一般在系统异常时 xff0c 我们可以将异常情况下的堆栈打印出来 xff0c 这样十分方便错误查找 实际上还有另外一个非常有用的功能 xff1a 分析代码的行为 android代码太过庞大复杂了 xff
  • 家里的垃圾移动光猫和tp路由器设置

    第一步 xff1a 将TP初始化 第二步 xff1a 将网线一端插在tpwan口 xff0c 就是与众不同的 第三步 xff1a 将TP的LAN口IP改为192 168 2 1 第四步 xff1a 将TP的WAN口设置为 xff1a 这里先
  • 蓝桥杯单片机闪烁灯控制逻辑分析

    以前的闪烁灯上来就是一片代码 xff0c 总感觉不是很靠谱 xff0c 现在决定写一个比较细致的逻辑分析 首先 xff0c 我们先来贴上开发板的电路图 我们首先先看一下上面的流水灯电路图 xff0c 74HC573锁存器进行流水灯的控制 x
  • idea取消vim模式

    在安装idea时选择了vim编辑模式 xff0c 但是用习惯了eclipse xff0c 总是要拷贝粘贴 xff0c 在idea中一直按ctrl 43 c和ctrl 43 v不起总用 于是想把vim模式关闭掉 方法 xff1a 菜单栏 to
  • atcoder beginner contest 142 Disjoint Set of Common Divisors(质因数分解)

    题目大意 xff1a 找出A B中的所有互质的因数 解题思路 xff1a 首先 xff0c 我们必须找出因数 我们知道对gcd a b 进行因数分解就能得到a xff0c b的所有因数 但是这里需要互质的因数 xff0c 所以我们这里需要对
  • spring管理事务控制的问题

    在使用ssm框架开发项目时 xff0c 事务控制交由spring来管理 xff0c 然而在查看日志时发现一个问题 xff1a org mybatis spring SqlSessionUtils closeSqlSession SqlSes
  • 关于 Debian 系统

    Debian是什么 xff1f Debian 计划是一个致力于创建一个自由操作系统的合作组织 我们所创建的这个操作系统名为Debian 操作系统是使计算机运行的基本程序和工具的集合 xff0c 其中最主要的部分称为内核 xff08 kern
  • btrfs的子卷与快照功能--Linux下备份系统

    关于Btrfs 什么是Btrfs 以及它的性能 可以在许多地方查阅得到 这里要提到的是 Btrfs文件系统本身就是由子卷 Subvolumes 构成的 它的top level是由B tree结构的含有目录 文件和子卷等东西构成的子卷 而在t
  • c# 通过dotPeek调试.net源码

    1 安装dotPeek 2 设置dotPeek xff0c 开启pdb服务 3 设置VS xff0c 添加服务来源 取消仅我的代码 4 测试代码 xff0c 在Console WriteLine 打断点 xff0c 并按F11进入 注意 x
  • 超棒的离线文档阅读器:Zeal

    前言 xff1a 大家写代码的时候总会有些方法或者属性不太清楚 xff0c 这时候我们就会打开浏览器 xff0c 然后找官方api或者直接搜索引擎找对应问题 xff0c 无疑花费了大量的时间 所以 xff0c 你需要一个桌面应用Zeal x
  • UITabBarController标签控制器相关设置

    1 根据下标索引以及控制器索引显示需要显示的控制器 self selectedIndex 61 sender tag 100 self selectedViewController 61 VC 2 设置标签控制器下面的文字 这里是设置系统自
  • Node App: Note命令行应用程序

    此程序需安装npm 第三方库yargs 解析命令行参数 xff0c chalk 输出特定样式的文本 安装版本如下 xff1a chalk 4 1 1 yargs 17 0 1 Note 应用程序支持 4个命令 xff1a add 添加一个n
  • 怎么样用批处理来创建一个txt文件

    怎么样用批处理来创建一个txt文件 cd gt test txt cd 表示切换到当前目录 xff0c 这个命令没有任何作用 gt 是重定向符 xff0c 将当前输出重定向到文件 这个命令创建一个名为test txt的空文件
  • STM32F103寄存器方式点亮LED流水灯

    一 设计思路 本实验使用GPIOB GPIOC GPIOD这3个端口控制LED灯 GPIO 是通用输入输出端口的简称 xff0c 简单来说就是 STM32 可控制的引脚 xff0c STM32 芯片 的 GPIO 引脚与外部设备连接起来 x
  • 一步步CEF(2)之编译ceflicent

    一步步CEF xff08 1 xff09 之编译libcef dll wrapper lib已经提供了c 43 43 的静态库 xff0c 这次要将cefclient编译出来 这里要说明一下 xff0c 如果仅仅将cefclient编译的话