vb.net获取Windows主题颜色、深色模式窗体,实时响应

news2024/9/30 1:31:05

先上效果图

可直接跳到完整代码

目录

先上效果图

开始教学

响应用户的更改

API讲解

 读取深浅模式、主题颜色、十六进制颜色转换

完整代码


如果大家留意资源管理器的“文件”菜单的话就会发现它的底色就是你设置的主题色,在更改Windows颜色模式时,很多的应用例如“文件资源管理器explorer”、“edge浏览器msedge”等等,那么如何做到这种效果呢?

开始教学

响应用户的更改

这可以放在自己的应用程序中,来适应和实时更改用户的设置,例如用户更改成深色模式,窗体自动变为深色,使用.net的事件响应用户更改:

对于vb.net用户,需要在窗体加载时加入语句:

Sub ChangeTheme(sender As Object, e As UserPreferenceChangedEventArgs)
    If e.Category = UserPreferenceCategory.General Then
        GetThemeColor()
        DwmSetWindowAttribute(Me.Handle, DwmWindowAttribute.UseImmersiveDarkMode, ThemeColor, Marshal.SizeOf(Of Integer))
        color = GetSystemColor()
        Label1.BackColor = color
    End If

End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    GetThemeColor()
    color = GetSystemColor()
    Label1.BackColor = color

    AddHandler SystemEvents.UserPreferenceChanged, AddressOf ChangeTheme

    DwmSetWindowAttribute(Me.Handle, DwmWindowAttribute.UseImmersiveDarkMode, ThemeColor, Marshal.SizeOf(Of Integer))

End Sub

API讲解

本次使用的API为 DwmSetWindowAttribute 函数,使用常量DwmWindowAttribute.UseImmersiveDarkMode

    <DllImport("dwmapi.dll", PreserveSig:=True)>
    Public Shared Function DwmSetWindowAttribute(ByVal hwnd As IntPtr, ByVal attr As DwmWindowAttribute, ByRef attrValue As Integer, ByVal attrSize As Integer) As Integer

    End Function
    Public Enum DwmWindowAttribute
        NCRenderingEnabled = 1
        NCRenderingPolicy
        TransitionsForceDisabled
        AllowNCPaint
        CaptionButtonBounds
        NonClientRtlLayout
        ForceIconicRepresentation
        Flip3DPolicy
        ExtendedFrameBounds
        HasIconicBitmap
        DisallowPeek
        ExcludedFromPeek
        Cloak
        Cloaked
        FreezeRepresentation
        PassiveUpdateMode
        UseHostBackdropBrush
        UseImmersiveDarkMode = 20
        WindowCornerPreference = 33
        BorderColor
        CaptionColor
        TextColor
        VisibleFrameBorderThickness
        SystemBackdropType
        Last
    End Enum

 摘自:DWMWINDOWATTRIBUTE (dwmapi.h) - Win32 apps | Microsoft Learn

DWMWA_NCRENDERING_ENABLED
与 DwmGetWindowAttribute 一起使用。 发现是否启用了非客户端呈现。 检索到的值的类型为 BOOL。 如果启用非客户端呈现,则为 TRUE;否则为 FALSE
DWMWA_NCRENDERING_POLICY
与 DwmSetWindowAttribute 一起使用。 设置非客户端呈现策略。 pvAttribute 参数指向 DWMNCRENDERINGPOLICY 枚举中的值。
DWMWA_TRANSITIONS_FORCEDISABLED
与 DwmSetWindowAttribute 一起使用。 启用或强制禁用 DWM 转换。 pvAttribute 参数指向 BOOL 类型的值。 如果为 TRUE ,则禁用转换; 如果为 FALSE ,则启用转换。
DWMWA_ALLOW_NCPAINT
与 DwmSetWindowAttribute 一起使用。 使非工作区中呈现的内容在 DWM 绘制的框架上可见。 pvAttribute 参数指向 BOOL 类型的值。 如果为 TRUE ,则使非工作区中呈现的内容在框架上可见;否则为 FALSE
DWMWA_CAPTION_BUTTON_BOUNDS
与 DwmGetWindowAttribute 一起使用。 检索窗口相对空间中描述文字按钮区域的边界。 检索到的值的类型为 RECT。 如果窗口最小化或对用户不可见,则检索到的 RECT 的值是未定义的。 应检查检索到的 RECT 是否包含可以使用的边界,如果它不包含,则可以断定窗口已最小化或不可见。
DWMWA_NONCLIENT_RTL_LAYOUT
与 DwmSetWindowAttribute 一起使用。 指定非客户端内容是否为从右到左 (RTL) 镜像。 pvAttribute 参数指向 BOOL 类型的值。 如果非客户端内容从右到左 (RTL) 镜像,则为 TRUE;否则为 FALSE
DWMWA_FORCE_ICONIC_REPRESENTATION
与 DwmSetWindowAttribute 一起使用。 强制窗口 (静态位图) 显示图标缩略图或速览表示形式,即使窗口的实时或快照表示形式可用也是如此。 此值通常在创建窗口期间设置,在窗口的整个生存期内不会更改。 但是,某些方案可能需要值随时间推移而更改。 pvAttribute 参数指向 BOOL 类型的值。 如果为 TRUE ,则需要图标缩略图或速览表示形式;否则为 FALSE
DWMWA_FLIP3D_POLICY
与 DwmSetWindowAttribute 一起使用。 设置 Flip3D 处理窗口的方式。 pvAttribute 参数指向DWMFLIP3DWINDOWPOLICY枚举中的值。
DWMWA_EXTENDED_FRAME_BOUNDS
与 DwmGetWindowAttribute 一起使用。 检索屏幕空间中的扩展框架边界矩形。 检索到的值的类型为 RECT。
DWMWA_HAS_ICONIC_BITMAP
与 DwmSetWindowAttribute 一起使用。 窗口将提供一个位图供 DWM 用作图标缩略图或速览表示形式, (窗口的静态位图) 。 可以使用 DWMWA_FORCE_ICONIC_REPRESENTATION 指定DWMWA_HAS_ICONIC_BITMAP。 DWMWA_HAS_ICONIC_BITMAP 通常在创建窗口期间设置,在窗口的整个生存期内不会更改。 但是,某些方案可能需要值随时间推移而更改。 pvAttribute 参数指向 BOOL 类型的值。 如果为 TRUE ,则告知 DWM 窗口将提供图标缩略图或速览表示形式;否则为 FALSE

Windows Vista 及更早版本: 不支持此值。
DWMWA_DISALLOW_PEEK
与 DwmSetWindowAttribute 一起使用。 不显示窗口的速览预览。 当鼠标悬停在任务栏中的窗口缩略图上时,速览视图将显示窗口的全尺寸预览。 如果设置了此属性,将鼠标指针悬停在窗口缩略图上会消除速览 (以防组中的另一个窗口具有显示) 的速览预览。 pvAttribute 参数指向 BOOL 类型的值。 如果为 TRUE ,则阻止速览功能,如果为 FALSE ,则允许它。

Windows Vista 及更早版本: 不支持此值。
DWMWA_EXCLUDED_FROM_PEEK
与 DwmSetWindowAttribute 一起使用。 防止窗口在调用 peek 时褪色到玻璃板。 pvAttribute 参数指向 BOOL 类型的值。 如果为 TRUE ,则防止窗口在另一个窗口的速览期间褪色,对于正常行为, 则为 FALSE 。

Windows Vista 及更早版本: 不支持此值。
DWMWA_CLOAK
与 DwmSetWindowAttribute 一起使用。 遮罩窗口,使其对用户不可见。 窗口仍由 DWM 组成。

将 与 DirectComposition 配合使用: 通过与分层子窗口关联的 DirectComposition 视觉对象对窗口内容的表示形式进行动画处理时,使用 DWMWA_CLOAK 标志遮蔽分层子窗口。 有关此用例的更多详细信息,请参阅 如何对分层子窗口的位图进行动画处理。

Windows 7 及更早版本: 不支持此值。
DWMWA_CLOAKED
与 DwmGetWindowAttribute 一起使用。 如果窗口是隐藏的, 请提供以下值之一来解释原因。

DWM_CLOAKED_APP (值0x00000001) 。 窗口已被其所有者应用程序遮蔽。

DWM_CLOAKED_SHELL (值0x00000002) 。 窗户被壳牌遮蔽了。

DWM_CLOAKED_INHERITED (值0x00000004) 。 隐藏值继承自其所有者窗口。

Windows 7 及更早版本: 不支持此值。
DWMWA_FREEZE_REPRESENTATION
与 DwmSetWindowAttribute 一起使用。 使用当前视觉对象冻结窗口的缩略图。 不要对缩略图进行进一步的实时更新,以匹配窗口的内容。

Windows 7 及更早版本: 不支持此值。
DWMWA_USE_HOSTBACKDROPBRUSH
与 DwmSetWindowAttribute 一起使用。 允许非 UWP 窗口使用主机背景画笔。 如果设置了此标志,则调用 Windows::UI::Composition API 的 Win32 应用可以使用主机背景画笔生成透明度效果 (请参阅 Compositor.CreateHostBackdropBrush) 。 pvAttribute 参数指向 BOOL 类型的值。 如果为 TRUE ,则为窗口启用主机背景画笔,如果为 FALSE ,则禁用它。

从 Windows 11 版本 22000 开始支持此值。
DWMWA_USE_IMMERSIVE_DARK_MODE
与 DwmSetWindowAttribute 一起使用。 启用深色模式系统设置时,允许以深色模式颜色绘制此窗口的窗口框架。 出于兼容性原因,无论系统设置如何,所有窗口都默认为浅色模式。 pvAttribute 参数指向 BOOL 类型的值。 TRUE 表示窗口采用深色模式, FALSE 表示始终使用浅色模式。

从 Windows 11 版本 22000 开始支持此值。
DWMWA_WINDOW_CORNER_PREFERENCE
与 DwmSetWindowAttribute 一起使用。 指定窗口的圆角首选项。 pvAttribute 参数指向 DWM_WINDOW_CORNER_PREFERENCE 类型的值。

从 Windows 11 版本 22000 开始支持此值。
DWMWA_BORDER_COLOR
与 DwmSetWindowAttribute 一起使用。 指定窗口边框的颜色。 pvAttribute 参数指向 COLORREF 类型的值。 应用负责根据状态更改(例如窗口激活中的更改)更改边框颜色。

为颜色 指定DWMWA_COLOR_NONE (值0xFFFFFFFE) 将禁止绘制窗口边框。 这样,就可以有一个没有边框的圆角窗口。

为颜色指定 DWMWA_COLOR_DEFAULT (值0xFFFFFFFF) 会将窗口重置回使用系统对边框颜色的默认行为。

从 Windows 11 内部版本 22000 开始支持此值。
DWMWA_CAPTION_COLOR
与 DwmSetWindowAttribute 一起使用。 指定描述文字的颜色。 pvAttribute 参数指向 COLORREF 类型的值。

为颜色指定DWMWA_COLOR_DEFAULT (值0xFFFFFFFF) 会将窗口重置回使用系统对描述文字颜色的默认行为。

从 Windows 11 内部版本 22000 开始支持此值。
DWMWA_TEXT_COLOR
与 DwmSetWindowAttribute 一起使用。 指定描述文字文本的颜色。 pvAttribute 参数指向 COLORREF 类型的值。

指定颜色DWMWA_COLOR_DEFAULT (值0xFFFFFFFF) 会将窗口重置回使用系统描述文字文本颜色的默认行为。

从 Windows 11 内部版本 22000 开始支持此值。
DWMWA_VISIBLE_FRAME_BORDER_THICKNESS
与 DwmGetWindowAttribute 一起使用。 检索 DWM 将围绕此窗口绘制的外部边框的宽度。 该值可能因窗口的 DPI 而异。 pvAttribute 参数指向 UINT 类型的值。

从 Windows 11 内部版本 22000 开始支持此值。
DWMWA_SYSTEMBACKDROP_TYPE
与 DwmGetWindowAttribute 或 DwmSetWindowAttribute 一起使用。 检索或指定窗口的系统绘制背景材料,包括在非工作区后面。 pvAttribute 参数指向 DWM_SYSTEMBACKDROP_TYPE 类型的值。

从 Windows 11 内部版本 22621 开始支持此值。
DWMWA_LAST
最大识别的 DWMWINDOWATTRIBUTE 值,用于验证目的。

 读取深浅模式、主题颜色、十六进制颜色转换

注意,ThemeColor是Bool值

Public ThemeColor As Boolean
Public color As Color
Private Sub GetThemeColor()
    Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize")

    If key IsNot Nothing Then
        Dim appsUseLightTheme As Integer = CInt(key.GetValue("AppsUseLightTheme", -1))

        If appsUseLightTheme = 0 Then
            ThemeColor = 1
        ElseIf appsUseLightTheme = 1 Then
            ThemeColor = 0
        Else

        End If

        key.Close()
    End If

End Sub

Function GetSystemColor() As Color
    Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\DWM")
    If key IsNot Nothing Then
        Dim value As Integer = CInt(key.GetValue("ColorizationColor"))
        Dim HexColor = Convert.ToString(value, 16)
        key.Close()
        Return ConvertSystemColor(HexColor)
    End If

End Function

Function ConvertSystemColor(HexColor As String) As Color
    Return Color.FromArgb(Convert.ToInt32(HexColor.Substring(0, 2), 16), Convert.ToInt32(HexColor.Substring(2, 2), 16), Convert.ToInt32(HexColor.Substring(4, 2), 16), Convert.ToInt32(HexColor.Substring(6, 2), 16))
End Function

完整代码

Imports Microsoft.Win32
Imports System.Runtime.InteropServices

Public Class Form1
    Public ThemeColor As Boolean
    Public color As Color
    Private Sub GetThemeColor()
        Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize")

        If key IsNot Nothing Then
            Dim appsUseLightTheme As Integer = CInt(key.GetValue("AppsUseLightTheme", -1))

            If appsUseLightTheme = 0 Then
                ThemeColor = 1
            ElseIf appsUseLightTheme = 1 Then
                ThemeColor = 0
            Else

            End If

            key.Close()
        End If

    End Sub

    Function GetSystemColor() As Color
        Dim key As RegistryKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\DWM")
        If key IsNot Nothing Then
            Dim value As Integer = CInt(key.GetValue("ColorizationColor"))
            Dim HexColor = Convert.ToString(value, 16)
            key.Close()
            Return ConvertSystemColor(HexColor)
        End If

    End Function

    Function ConvertSystemColor(HexColor As String) As Color
        Return Color.FromArgb(Convert.ToInt32(HexColor.Substring(0, 2), 16), Convert.ToInt32(HexColor.Substring(2, 2), 16), Convert.ToInt32(HexColor.Substring(4, 2), 16), Convert.ToInt32(HexColor.Substring(6, 2), 16))
    End Function

    Sub ChangeTheme(sender As Object, e As UserPreferenceChangedEventArgs)
        If e.Category = UserPreferenceCategory.General Then
            GetThemeColor()
            DwmSetWindowAttribute(Me.Handle, DwmWindowAttribute.UseImmersiveDarkMode, ThemeColor, Marshal.SizeOf(Of Integer))
            color = GetSystemColor()
            Label1.BackColor = color
        End If

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        GetThemeColor()
        color = GetSystemColor()
        Label1.BackColor = color

        AddHandler SystemEvents.UserPreferenceChanged, AddressOf ChangeTheme

        DwmSetWindowAttribute(Me.Handle, DwmWindowAttribute.UseImmersiveDarkMode, ThemeColor, Marshal.SizeOf(Of Integer))

    End Sub
    <DllImport("dwmapi.dll", PreserveSig:=True)>
    Public Shared Function DwmSetWindowAttribute(ByVal hwnd As IntPtr, ByVal attr As DwmWindowAttribute, ByRef attrValue As Integer, ByVal attrSize As Integer) As Integer

    End Function
    Public Enum DwmWindowAttribute
        NCRenderingEnabled = 1
        NCRenderingPolicy
        TransitionsForceDisabled
        AllowNCPaint
        CaptionButtonBounds
        NonClientRtlLayout
        ForceIconicRepresentation
        Flip3DPolicy
        ExtendedFrameBounds
        HasIconicBitmap
        DisallowPeek
        ExcludedFromPeek
        Cloak
        Cloaked
        FreezeRepresentation
        PassiveUpdateMode
        UseHostBackdropBrush
        UseImmersiveDarkMode = 20
        WindowCornerPreference = 33
        BorderColor
        CaptionColor
        TextColor
        VisibleFrameBorderThickness
        SystemBackdropType
        Last
    End Enum

End Class

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

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

相关文章

maven 包管理平台-05-multi module 多模块

拓展阅读 maven 包管理平台-01-maven 入门介绍 Maven、Gradle、Ant、Ivy、Bazel 和 SBT 的详细对比表格 maven 包管理平台-02-windows 安装配置 mac 安装配置 maven 包管理平台-03-maven project maven 项目的创建入门 maven 包管理平台-04-maven archetype 项目原型 ma…

Zookeeper学习2:原理、常用脚本、选举机制、监听器

文章目录 原理选举机制&#xff08;重点&#xff09;情况1&#xff1a;正常启动集群情况2&#xff1a;集群启动完&#xff0c;中途有机器挂了 监听器客户端向服务端写入数据客户端向服务端Leader节点写入客户端向服务端Follower节点写入 Paxos算法&#xff08;每个节点都可以提…

【力扣白嫖日记】608.树节点

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 175.组合两个表 表&#xff1a;Person 列名类型idintp_idvarchar 树中的每个节点可以是以下三种类型之一&a…

Unity铰链四杆机构设计和运动仿真

一、效果图 设定好各边长度和转速后&#xff0c;点击【设置并启动】&#xff0c;自动生成一个机构模型&#xff0c;并按照原理进行运转 二、铰链四杆机构介绍 机架&#xff1a;A和D是固定位置&#xff0c;叫做机架。 曲柄&#xff1a;B点绕A点旋转&#xff0c;构成曲柄。 连…

poi 设置允许西文在单词中间换行

说明本文是CSDN-问答模块,题主提问。问题描述:poi 设置允许西文在单词中间换行 一、问题描述 poi 设置允许西文在单词中间换行? // 创建一个新的文档XWPFDocument document = new XWPFDocument();// 创建段落XWPFParagraph firstParagraph = document.createParagraph();fir…

自定义类型(结构体、枚举、联合体)内存大小的计算方法

内存对齐 为什么会存在内存对齐&#xff1f; 大部分参考资料是这么说的&#xff1a; 平台原因(移植原因)&#xff1a; 不是所有的硬件平台都能访问任意地址上的任意数据的&#xff1b;某些硬件平台只能在某些地址处取某些特定类型的数据&#xff0c;否则抛出硬件异常。性能原…

Python绘制不同形状词云图

目录 1.基本词云图1.1 导入所需库1.2 准备词汇1.3 配置参数并生成词云图1.4 在Python窗口中显示图片1.5 效果展示1.6 完整代码 2. 不同形状词云图2.1 找到自己所需形状图片2.2 利用PS将图片设置为黑白色2.3 在代码中设置背景2.4 效果展示 1.基本词云图 1.1 导入所需库 import…

设计模式七:责任链模式

文章目录 1、责任链模式2、spring中的责任链模式Spring InterceptorServlet FilterNetty 1、责任链模式 责任链模式为请求创建了一个接收者对象的链&#xff0c;在这种模式下&#xff0c;通常每个节点都包含对另一个节点者的引用。每个节点针对请求&#xff0c;处理自己感兴趣…

备战蓝桥杯---动态规划的一些思想1

话不多说&#xff0c;直接看题&#xff1a; 目录 1.双线程DP 2.正难则反多组DP 3.换个方向思考&#xff1a; 1.双线程DP 可能有人会说直接贪心&#xff1a;先选第1条的最优路径&#xff0c;再选第2条最优路径。 其实我们再选第1条时&#xff0c;我们怎么选会对第2条的路径…

宝塔面板安装各种组件以及部署应用服务

在linux服务器安装宝塔面板 一、从宝塔官网下载exe安装包&#xff0c;安装命令从宝塔官网&#xff08;https://www.bt.cn/&#xff09;获取 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh二、安…

【JGit 】一个完整的使用案例

需求 生成一系列结构相同的项目代码&#xff0c;将这些项目的代码推送至一个指定的 Git 仓库&#xff0c;每个项目独占一个分支。 推送时若仓库不存在&#xff0c;则自动创建仓库。 分析 生成代码使用 Java 程序模拟&#xff0c;每个项目中模拟三个文件。Project.cpp 、Pro…

总结 HashTable, HashMap, ConcurrentHashMap 之间的区别

1.多线程环境使用哈希表 HashMap 不行,线程不安全 更靠谱的,Hashtable,在关键方法上加了synchronized 后来标准库又引入了一个更好的解决方案;ConcurrentHashMap 2.HashMap 首先HashMap本身线程不安全其次HashMap的key值可以为空&#xff08;当key为空时&#xff0c;哈希会…

FNM和SFNM的区别

看图说话。 级联模式下&#xff0c;FNM模式&#xff0c;从片的中断都是同一个级别&#xff0c;因此从片如果有多个中断发生&#xff0c;中断之间不会抢占&#xff0c;只能按顺序处理。 级连模式下&#xff0c;SFNM模式&#xff0c;从片中断有优先级的区别&#xff0c;高优先级…

Qt外部调用进程类QProcess的使用

有的时候我们需要在自己程序运行过程中调用其他进程&#xff0c;那么就需要用到QProcess。 首先可以了解一些关于进程的相关知识&#xff1a;线程与进程&#xff0c;你真得理解了吗_进程和线程的区别-CSDN博客 进程是计算机中的程序关于某数据集合上的一次运行活动&#xff0…

7.1.1 selenium介绍及安装chromedriver

目录 1. Selenium的用途 2. 安装Selenium库 3. 安装chromedriver 1. 查看谷歌版本号​编辑 2. 找到最新版本及下载 3. 配置环境变量 4. 检测是否配置成功 5. 用python初始化浏览器对象检测&#xff1a; 6. 参考链接 1. Selenium的用途 在前面我们提到&#xff1a;在我…

NIO核心三:Selector

一、基本概念 选择器提供一种选择执行已经就绪的任务的能力。selector选择器可以让单线程处理多个通道。如果程序打开了多个连接通道&#xff0c;每个连接的流量都比较低&#xff0c;可以使用Selector对通道进行管理。 二、如何创建选择器 1.创建Selector Selector select…

ArduinoTFTLCD应用

ArduinoTFTLCD应用 ArduinoTFTLCD应用硬件连接软件导入库显示数字、字符显示汉字方案1方案2 显示图片 总结 ArduinoTFTLCD应用 对于手工喜欢DIY的人来说&#xff0c;Arduino驱动的TFTLCD被很多人使用&#xff0c;此处就总结一下&#xff0c;使用的是VScode的PlatformIO插件驱动…

Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档

文章目录 ⭐前言⭐Docusaurus框架渲染mdx内容&#x1f496; 创建一个mdx文件&#x1f496; 创建一个react jsx文件&#x1f496; mdx引入react的组件并渲染&#x1f496; mdx引入react的组件源代码内容 ⭐渲染一个echarts地图的代码解释文档&#x1f496; echarts 渲染地图&…

USLE模型-P因子的计算

首先需要下载土地利用类型数据集&#xff0c;查看我的相关文章 对于已有的10种土地类型代码&#xff0c;需要按水土保持措施P值表进行重分类。 10是耕地&#xff0c;且庆阳市坡度10-15度左右&#xff0c;所以赋给了3&#xff08;最好再下个DEM计算一下&#xff0c;这里就统一用…

WebServer -- 注册登录

目录 &#x1f349;整体内容 &#x1f33c;流程图 &#x1f382;载入数据库表 提取用户名和密码 &#x1f6a9;同步线程登录注册 补充解释 代码 &#x1f618;页面跳转 补充解释 代码 &#x1f349;整体内容 概述 TinyWebServer 中&#xff0c;使用数据库连接池实现…