实现桌面动态壁纸——认识 WebView2 控件

目录

前言

一、什么是 WebView2 ?

二、使用示例存储库

2.1 下载存储库

2.2 编译解决方案项目文件

2.3 运行示例程序

三、如何修改 WebView2 示例


本文来源于:https://blog.csdn.net/qq_59075481/article/details/138637909。

前言

上一节我们讲解了如何将任意窗口嵌入桌面壁纸层和图标层之间,它是向用户展示动画所必需的准备工作。但是,我们并没有去实现动态壁纸的前端部分,动态壁纸的前端组件一般由浏览器微核或视频解码器集成。这一节我将为您介绍基于 WebView2 控件技术的自定义浏览器微核,这将涉及到动态壁纸的前端组件的组成部分。

系列文章:

序号文章标题(链接)AID
1实现桌面动态壁纸(一)125361650
2实现桌面动态壁纸(二)[即将发布]----
3实现桌面动态壁纸——认识 WebView2 控件138637909

一、什么是 WebView2 ?

Microsoft Edge WebView2 控件允许在本机应用中嵌入式 Web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎,以在本地应用中显示 Web 内容。使用 WebView2 可以在本机应用的不同部分嵌入 Web 代码,或在单个 WebView2 实例中生成本地应用。

说白了 WebView2 就是 Microsoft Edge 浏览器的一个接口集,便于开发者灵活集成浏览器的功能到任意应用程序中。

二、使用示例存储库

微软提供了一个基于 Microsoft Edge WebView2 控件开发的 Browser 示例,WebView2Browser。

存储库在 Github 上:https://github.com/MicrosoftEdge/WebView2Browser#webview2browser。

此外还有分发版本:分发应用和 WebView2 运行时。

2.1 下载存储库

我们打开项目页面,从右侧的 Release 栏点击最新发布的下载。

然后选择最上面的 ZIP 部分进行下载:

下载后大约 3.43 MB:

2.2 编译解决方案项目文件

解压后我们得到这样的目录:

这里我们注意到 NuGet 包文件并未包含在项目中,但是项目包含的 packages.config 配置文件将在随后用于恢复依赖库和头文件。从配置文件看出,项目依赖 3 个库。

直接打开项目(sln 文件),升级项目文件。

浏览一下项目结构:

选择 “重新生成解决方案”。

然后,我们遇到了一堆报错。

这是什么意思呢?

NuGet 已经自动下载了库文件了,进入项目目录下的 packages 目录就能看到:

显然,这是项目的生成设置乱了。

点击项目属性:

分别在每个配置以及平台选项卡下修改:

1)C/C++ /常规/附加包含目录下添加头文件目录

这里我们需要从项目的头文件代码里面去排查有哪些相对地址出了问题:

例如,需要添加下面内容:

./packages/cpprestsdk.v141.2.10.12.1/build/native/include/;./packages/Microsoft.Web.WebView2.1.0.664.37/build/native/include/;./packages/Microsoft.Windows.ImplementationLibrary.1.0.191107.2/include/;%(AdditionalIncludeDirectories)

2)链接器/输入/附加依赖项下添加 对应解决方案平台  “.lib” 文件 路径

x64 debug 就是下面的路径,如果是 release 则 cpprest141_2_10d.lib 改为 cpprest141_2_10.lib。如果是 Win32(x86) 平台,则 路径里面的 x64 改为 x86 即可。

这些都是先从 packages 目录中逐级查看找到对应的文件,然后再填写的。

.\packages\Microsoft.Web.WebView2.1.0.664.37\build\native\x64\WebView2Loader.dll.lib
.\packages\cpprestsdk.v141.2.10.12.1\build\native\x64\lib\cpprest141_2_10d.lib

3)从生成事件/生成后事件/命令行 里面添加 文件拷贝指令,将需要的 “.dll 文件” 在生成时复制到编译输出的路径下。

第二行添加的内容(和 .lib 一样,不同平台路径和用的文件不一样):

xcopy ".\packages\cpprestsdk.v141.2.10.12.1\build\native\x64\bin\cpprest141_2_10d.dll" "$(OutDir)" /S /I /Y

以上 3 个步骤全部完成后,就可以正常编译了。

2.3 运行示例程序

打开编译结果(演示时选择的是 x64 Release):

打开后如下图所示,这个就是主程序了。
 

运行一下试试,看上去就是一个精简版的 Edge:

三、如何修改 WebView2 示例

(此部分将放在后期讲解)


文章来源于:https://blog.csdn.net/qq_59075481/article/details/138637909,

转载请注明出处。

本文发布于:2024.05.10,更新于:2024.05.10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/614829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

05-10 周五 FastBuild 容器启动引起超时问题定位与解决

05-10 周五 FastBuild 容器启动超时问题 时间版本修改人描述2024年5月11日16:45:33V0.1宋全恒新建文档2024年5月11日22:37:21V1.0宋全恒完成解决方案的撰写,包括问题分析,docker命令 简介 关于FastBuild的优化,已经撰写了多个博客&#xff0…

书生浦语训练营第四次课作业

基础作业 环境配置 拷贝internlm开发机内的环境 studio-conda xtuner0.1.17# 激活环境 conda activate xtuner0.1.17 # 进入家目录 (~的意思是 “当前用户的home路径”) cd ~ # 创建版本文件夹并进入,以跟随本教程 mkdir -p /root/xtuner0…

Celery Redis 集群版连接和PyCharm启动配置

目录 使用Redis cluster版作为broker原因 PyCharm配置 使用Redis cluster版作为broker 在celery5及其之前版本,需要配置如下才可行 celery_app.conf.update( broker_transport_options{“global_keyprefix”: “{celery}:”}, ) 原因 https://github.com/celery/…

【练习4】

1.两数之和 暴力&#xff1a; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n nums.size();vector<int> res(2, -1); // 初始化结果为-1for (int i 0; i < n; i) {int temp nums[i];for (int j i 1; j <…

若依修改表格滚动条宽度

找到目录ruoyi-ui/src/assets/styles/ruoyi.scss 添加滚动条样式 //修改滚动条的宽度和高度&#xff08;横向是高度&#xff0c;纵向是宽度&#xff09;::-webkit-scrollbar {width: 14px;height: 14px;background-color: transparent;}

配置Docker对象与管理守护进程

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 本章节的快速目录导航&#xff1a; 一、配置Docker对象 1.1、Docker对象的标记 1.2、格式化命令和日志的输出 二、示例&#xff1a; 2.1、管理…

大模型微调之 在亚马逊AWS上实战LlaMA案例(十)

大模型微调之 在亚马逊AWS上实战LlaMA案例&#xff08;十&#xff09; 训练数据集格式 SageMaker JumpStart 目前支持域适应格式和指令调整格式的数据集。在本节中&#xff0c;我们指定两种格式的示例数据集。有关更多详细信息&#xff0c;请参阅附录中的数据集格式化部分。 …

ECharts系列:基本使用及配置项

目录 基本使用 配置项的写法与位置 配置项option包含属性 各个配置项属性大全 基本使用 在阅读本篇文章时请参考ECharts官网地址中的内容配合了解 首先我们知道ECharts图表中有许多类型&#xff0c;如折线图、柱状图、饼形图等&#xff0c;下面我以折线图为例讲解ECharts图…

户籍管理系统的设计与实现

【免费】户籍管理系统的设计与实现.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89296790 ​​​​​​​户籍管理系统的设计与实现 摘 要 当今社会人们生活质量越来越高&#xff0c;人们对生活品质的追求不断提升&#xff0c;对于孩子求学&#xff0c;变更住…

【一站式学会Kotlin】第四节默认参数和具名参数、unit返回值类型

作者介绍&#xff1a; 百度资深Android工程师T6&#xff0c;在百度任职7年半。 目前&#xff1a;成立赵小灰代码工作室&#xff0c;欢迎大家找我交流Android、微信小程序、鸿蒙项目。文章底部&#xff0c;csdn有为我插入微信的联络方式&#xff0c;欢迎大家联络我。 一&#x…

C++笔试强训day18

目录 1.压缩字符串 2.chika和蜜柑 3.01背包 1.压缩字符串 链接 注意细节&#xff1a; 1.数量为一个时不用输出个数 2.当数量超过 9 时&#xff0c;需要逐个拿出 n 的位数&#xff0c;如153次&#xff0c;需要拿出1、5、3三个数 详细代码&#xff1a; class Solution { publ…

Apache Sqoop:高效数据传输工具搭建与使用教程

目录 引言一、环境准备二、安装sqoop下载sqoop包解压文件 三、配置Sqoop下载mysql驱动拷贝hive的归档文件配置环境变量修改sqoop-env.sh配置文件替换版本的commons-lang的jar包 验证Sqoop安装查看Sqoop版本测试Sqoop连接MySQL数据库是否成功查看数据库查看数据表去除警告信息 四…

【18-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

静态分析-RIPS-源码解析记录-03

既然有源码可以debug&#xff0c;那么直接跑测试用例&#xff0c;来跟踪处理逻辑感觉比直接看代码理逻辑更快一些&#xff0c;尤其是涉及到了扫描阶段&#xff0c;不然不容易弄清某刻某个变量的取值。 对于所有漏洞而言&#xff0c;都是由sink点到source点检测是否有过滤函数&…

毕业论文凑字数——关于IVR自动语音应答交互式电话导航自动总机等等概念的一些剖析

目录 IVR毕业论文的讨巧思路IVR自动语音应答IVR的使用流程IVR的各种应用IVR的基本配置 一个小朋友的毕业论文要凑字数&#xff0c;所以推荐她讲一讲IVR&#xff0c;因为IVR可以翻译的名字很多&#xff0c;比如交互式语音应答&#xff0c;自动语音应答&#xff0c;自动语音服务&…

创新指南 | 生成式AI如何引领企业创新未来?

2023年麦肯锡全球数字战略调查了1000多名受访者&#xff0c;发现&#xff1a;建立创新文化的组织与它们应用包括生成式AI在内的最新数字技术提高产出的能力之间有着惊人的强关联。 本文探讨了顶尖创新企业采取的五项行动&#xff0c;使它们与同行之间拉开距离&#xff0c;并在使…

WordPress原创插件:超链接点击访问统计

WordPress原创插件&#xff1a;超链接点击访问统计 https://download.csdn.net/download/huayula/89296775

工业机器人应用实践之玻璃涂胶(篇三)

工业机器人 接上篇文章&#xff0c;浅谈一下实践应用&#xff0c;具体以玻璃涂胶为例&#xff1a; 了解工业机器人在玻璃涂胶领域的应用 认识工具坐标系的标定方法 掌握计时指令的应用 掌握人机交互指令的应用 掌握等待类指令用法&#xff08;WaitDI、WaitUnitl 等&#xff0…

springboot(3.2.5)初步集成MinIO(8.5.9)开发记录

springboot初步集成MinIO开发记录 说明一&#xff1a;引入maven依赖二&#xff1a;手动注入minioClient三&#xff1a;创建service类四&#xff1a;测试打印连接信息五&#xff1a;时区转化工具类六&#xff1a;常用操作演示 说明 这里只是作者开发的记录&#xff0c;已备将来…

理解导数(x^n求导后nx^n-1)

以下都是为了方便理解 微小量是 t M(x)是一个函数 M 在 x 处的斜率 M 在 x 处的导数 垂直距离 平移距离 M ( x t ) − M ( x ) ( x t ) − x M在x处的斜率 M在x处的导数 \dfrac{垂直距离}{平移距离} \dfrac{M\left( xt\right) -M\left( x\right) }{(x t) -x} M在x处的斜…