实现桌面动态壁纸——认识 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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET学生信息管理系统

摘 要 本文介绍了在ASP.net环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。通过分析某一学校学生管理的不足,创建了一套行之有效的计算机管理学生的方案。文章介绍了学生管理信息系统的系统分析部分&#xff0c…

聚合工程搭建、工程依赖导入

上一章讲了自动化云测平台的一些环境的准备 如果还未完成云服务器的环境搭建和本地环境的搭建,请点击左侧 -> 传送门 那么正式开始这一章的内容 聚合工程搭建 创建项目 我们先给项目命个名:xxx-meter,构建系统,我们选择M…

HBuilder报错--openssl-legacy-provider is not allowed in NODE_OPTIONS解决方法

目录 一、问题描述二、解决方法 一、问题描述 HBuilder编译时报错:–openssl-legacy-provider is not allowed in NODE_OPTIONS 二、解决方法 将 windows 环境变量 NODE_OPTIONS 的值设置为空,由: 改为:

Zabbix监控中文乱码问题解决方法

一、问题描述 1.查看Zabbix仪表盘 在Zabbix的监控仪表盘界面,字体显示为“方框”,无法查看到具体的性能指标名称。 2.问题分析 Zabbix的web端没有中文字库,导致切换到中文页面,中文成了乱码这个问题,我们最需要把中文…

暗区突围pc资格 暗区突围pc端测试资格获取

《暗区突围》的诞生,仿佛在游戏界投下了一枚深水炸弹,它不仅仅是射击游戏的新标杆,更是对玩家策略思维、生存直觉与团队协作能力的一次全面考验。在这个精心构建的虚拟战场中,每一次踏入暗区,都是对未知的探索&#xf…

Java递归

递归 1. 生活中的故事 从前有坐山,山上有座庙,庙里有个老和尚给小和尚将故事,讲的就是: "从前有座山,山上有座庙,庙里有个老和尚给小和尚讲故事,讲的就是: "从前有座山…

视频资源汇聚平台常见的几种接入方式

视频资源汇聚平台 视频汇聚平台可以实现海量资源的接入、汇聚、存储、处理、分析、运维等,平台具备轻量化接入能力,可支持多协议方式接入,包括主流标准协议GB28181、RTSP、ONVIF、RTMP、FLV、WEBSOCKET等,以及厂家私有协议与SDK接…

【Linux:lesson1】的基本指令

🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🚗打开Xshell,登陆root…

再谈毕业论文设计投机取巧之IVR自动语音服务系统设计(信息与通信工程A+其实不难)

目录 举个IVR例子格局打开,万物皆能IVR IVR系统其实可盐可甜。还能可圈可点。 戎马一生,归来依然IVR。 举个IVR例子 以下是IVR系统的一个例子。 当您拨打电话进入IVR系统。 首先检验是否为工作时间。 如是,您将被送入ivr-lang阶段&#xff0…

Python基础详解四

一,Json解析 字典转换为JSON: import jsondata [{"name":"袁震","age":20},{"name":"张三","age":21},{"name":"李四","age":22}] str json.dumps(data) …

oracle 数据库与服务、实例与SID、表空间、用户与表模式

一、数据库与数据库服务: 概念:就是一个数据库的标识,在安装时就要想好,以后一般不修改,修改起来也麻烦,因为数据库一旦安装,数据库名就写进了控制文件,数据库表,很多地方都会用到这个数据库名。是数据库系统的入口,它会内置一些高级权限的用户如SYS,SYSTEM等。我们…

鸿蒙开发接口Ability框架:【DataAbilityHelper模块(JS端SDK接口)】

DataAbilityHelper模块(JS端SDK接口) 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 本模块接口仅可在FA模型下使用。 使用说明 使用前根据具体情况引入如下模块 import featureAbility from …