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

news2024/10/6 10:38:04

目录

前言

一、什么是 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.coloradmin.cn/o/1663845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

指针的奥秘(三):数组指针+函数指针(+typedef)+函数数组指针+转移表

指针 一.数组指针1.数组指针变量是什么?2.指针数组和数组指针区别和口诀3.数组指针变量怎么初始化4.二维数组传参的本质 二.函数指针1.函数指针变量的创建2.函数指针变量的使用3.两段有趣的代码1.( *( void ( * )( ) )0 ) ( );2.void( *signle(int, void( * )(int) …

小程序开发平台源码系统 低成本助力中小企业建站 带完整的安装代码包以及搭建教程

在当今数字化时代,拥有一个功能齐全、界面美观的小程序对于中小企业来说至关重要。然而,高昂的开发成本和复杂的搭建流程往往成为制约中小企业建立小程序的瓶颈。小编给大家分享一款低成本、易用性强的小程序开发平台源码系统,旨在助力中小企…

基于ChatGLM+Langchain离线搭建本地知识库(免费)

目录 简介 服务部署 实现本地知识库 测试 番外 简介 ChatGLM-6B是清华大学发布的一个开源的中英双语对话机器人。基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT…

SSM【Spring SpringMVC Mybatis】—— Spring(一)

目录 1、初识Spring 1.1 Spring简介 1.2 搭建Spring框架步骤 1.3 Spring特性 1.5 bean标签详解 2、SpringIOC底层实现 2.1 BeanFactory与ApplicationContexet 2.2 图解IOC类的结构 3、Spring依赖注入数值问题【重点】 3.1 字面量数值 3.2 CDATA区 3.3 外部已声明be…

地图涟漪效果

参考API echarts图表集 useEcharts.js import { onBeforeUnmount, onDeactivated } from "vue"; // import * as echarts from "echarts";/*** description 使用 Echarts (只是为了添加图表响应式)* param {Element} myChart Echarts实例 (必传)* param …

【IC前端虚拟项目】axi ddr/sram验证组件思路与编写

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 在完成了所有的utils包括apb_utils之后,就要进行验证环境的整体搭建,因此我们再把验证环境拿出来看一下: 按照由底至顶层的思路,接下主要有五大部分需要我们完成:ram_model、reference_model、env、…

软件体系结构总结

文章目录 一、软件体系结构概述1.1 基本概念1.1.1 背景1.1.2 定义1.1.3 系统1.1.3.1 定义1.1.3.2 特性1.1.3.3 系统的体系结构 1.1.4 软件设计的层次性1.1.5 体系结构的类别(类型)1.1.6 重要性(意义) 1.2 模块及其设计1.2.1 定义1…

值得收藏!!《软考信息处理技术员》必背100母题,轻松45+

距离软考考试的时间越来越近了,趁着这两周赶紧准备起来 今天给大家整理了——软考信息处理技术员100道经典母题,年年从里面抽,有PDF,可打印,每天刷几道。 第一章 电脑的基本操作 1、( )不是国产…

OC foudation框架(上)学习

foundation框架 文章目录 foundation框架字符串(NSString && NSMutableString)NSString的其他功能NSMutableString 日期与时间 (NSDate)2.1 日期与时间(NSDate)2.2日期格式器日历与日期组件定时器&…

文献速递:多模态深度学习在医疗中的应用--多模态深度学习用于阿尔茨海默病痴呆评估

Title 题目 Multimodal deep learning for Alzheimer’s disease dementia assessment 多模态深度学习用于阿尔茨海默病痴呆评估 01 文献速递介绍 全球每年新发痴呆症病例近1000万例,其中阿尔茨海默病(AD)最为常见。需要新的措施来改善因…

Linux(centos7)系统配置 ntpd服务设置时间同步

一 、应用场景 两台服务器,要求使他们时间同步,有人问为什么要时间同步?如果一个集群中,时间相差很大,那么会出现很多诡异的问题,你也不想在一个无法解决的问题上浪费几天时间吧!总之,设置服务器之间时间同步,为了避免很多问题的发生! ntpd(Network Time Protocol …

【ZYNQ】Vivado 封装自定义 IP

在 FPGA 开发设计中,IP 核的使用通常是不可缺少的。FPGA IP 核是指一些已经过验证的、可重用的模块或者组件,可以帮助构建更加复杂的系统。本文主要介绍如何使用 Vivado 创建与封装用户自定义 IP 核,并使用创建的 IP 核进行串口回环测试。 目…

[开发|安卓] Android Studio 开发环境配置

Android Studio下载 Android Studio下载地址 下载SDK依赖 1.点击左上角菜单 2.选择工具 3.打开SDK管理中心 4.下载项目目标Android版本的SDK 配置安卓虚拟机 1.打开右上角的设备管理 2.选择合适的手机规格 3.下载并选择项目目标Android系统 4.点击完成配置 …

SpringBoot 3.2.5 + ElasticSearch 8.12.0 - SpringData 开发指南

目录 一、SpringData ElasticSearch 1.1、环境配置 1.2、创建实体类 1.3、ElasticSearchTemplate 的使用 1.3.1、创建索引库,设置映射 1.3.2、创建索引映射注意事项 1.3.3、简单的 CRUD 1.3.4、三种构建搜索条件的方式 1.3.5、NativeQuery 搜索实战 1.3.6…

使用socat做端口转发

最近买的云上mongo数据库但是数据库不支持外网访问,准备做iptables转发但是一直不成功,腾讯云官方给予的解释是受服务器内启动的docker影响 做iptables转发会冲突,所以只能另想办法,我发现使用socat做转发也很好用,所以…

01.基本概念

操作系统 为什么要有操作系统? 计算机时一个十分复杂的系统,又cpu、内存、磁盘、IO设备、网络接口等等复杂的硬件组成,人的精力是有限的,不可能了解所有的硬件接口,但是程序可以。 所以我们在计算机上安装了一层软件&…

网易云新玩法:教你赚取第一桶金!

在现今的音乐应用市场中,有几款软件备受广大用户的青睐。 其中,QQ音乐、酷狗音乐以及网易云音乐都是大家耳熟能详的名字。 这些平台不仅提供了丰富的音乐资源,还具备了许多便捷的功能,使得用户们能够享受到更为优质的音乐体验。…

五一 大项目

Docker 中的 Nginx 服务为什么要启用 HTTPS 一安装容器 1 安装docker-20.10.17 2 安装所需的依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm23 添加Docker官方仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos…

linux安装配置Docker保姆级教程

Docker到底是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间…

【MySQL的内置函数】

文章目录 一、日期函数1.current_date()2.current_time()3.current_timestamp4. date_add 穿越未来5.date_sub 回到过去6.datediff案例 二、字符串函数2.1charset2.2 concat ——拼接字符串2.3 ucase——转化成大写2.4 lcase——转化成小写2.5 left()2.6…