当前位置: 首页 > news >正文

24H2壁纸显示错误修复(针对vb.net的紧急加更)

这个24H2已经有了好长时间了,为什么到25年下半年才被我发现,那是因为没有24H2版本的电脑啊!

之前那个台式机不知为何不能更新到24H2,而大家对于24H2桌面壁纸异常的问题也都得到了解决,这一次可能有些仓促,我直接给出讲核心代码

参考文献:

实现桌面动态壁纸(一)_动态壁纸原理-CSDN博客

这个博主专门研究了24H2版本壁纸和Progman的WorkerW问题,我按照ta的思路写了VB.net版本的代码,目前仍在测试阶段,代码为测试代码,已经较为完善,需要根据需要修改!

最值得注意的就是,设置窗口为不透明,根据需要加,最好加上去!

SetLayeredWindowAttributes(hWnd, 0, 255, LWA_ALPHA)
Public BackLo As Point
Dim sendMessageBack As IntPtr
Const GWL_EXSTYLE As Integer = -20
Const WS_EX_LAYERED = &H80000
Public Const LWA_ALPHA As Integer = &H2
Const HWND_BOTTOM = 1
Const HWND_TOP = 0
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const SWP_NOACTIVATE = &H10
Const SW_SHOW = 5
Const WS_EX_NOACTIVATE = &H8000000LDeclare Auto Function GetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Integer
Declare Auto Function SetWindowLong Lib "user32" (ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As IntegerPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickBackPalyer.Show()Dim hWnd = BackPalyer.Handle'24H2Dim ProgmanPtr = FindWindow("Progman", Nothing)Dim WorkerW As IntPtr'激活WorkerWSendMessageTimeout(ProgmanPtr, &H52C, IntPtr.Zero, IntPtr.Zero, 0, &H3E8, sendMessageBack)'查找子窗口获得句柄WorkerW = FindWindowEx(ProgmanPtr, IntPtr.Zero, "WorkerW", Nothing)Dim DefView = &H102AEDefView = FindWindowEx(ProgmanPtr, IntPtr.Zero, "SHELLDLL_DefView", Nothing)' 获取窗口当前的扩展样式Dim extendedStyle As Integer = GetWindowLong(hWnd, GWL_EXSTYLE)' 设置新的扩展样式,增加分层样式
SetWindowLong(hWnd, GWL_EXSTYLE, extendedStyle Or WS_EX_LAYERED Or WS_EX_NOACTIVATE)'SetLayeredWindowAttributes(hWnd, 0, 255, LWA_ALPHA)'嵌入progmanSetParent(hWnd, ProgmanPtr)'调整Z序'playerSetWindowPos(hWnd, HWND_TOP, 0, 0, 500, 500, 0)'SHELLDLL_DefView 桌面图标窗口SetWindowPos(DefView, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE)'WorkerWSetWindowPos(WorkerW, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOACTIVATE)ShowWindow(hWnd, SW_SHOW)ShowWindow(DefView, SW_SHOW)ShowWindow(WorkerW, SW_SHOW)End SubPublic Shared Function RefreshBack() As BooleanDim wallpaper As New StringBuilder(200)SystemParametersInfo(&H73, 200, wallpaper, 0)Dim returnValue As Integer = SystemParametersInfo(20, 1, wallpaper, 3)If returnValue <> 0 ThenDim currentUserRegistry As RegistryKey = Registry.CurrentUserDim desktopRegistry As RegistryKey = currentUserRegistry.CreateSubKey("Control Panel\Desktop\")desktopRegistry.SetValue("Wallpaper", wallpaper.ToString())Return TrueEnd IfReturn False
End FunctionPrivate Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.ClosingBackPalyer.Close()RefreshBack()
End Sub

效果:

系统版本号暂时为 纯正24H2——26100.1

注意:测试过程中,如果在Player窗口处于焦点状态,那么可能会改变Progman窗口的Z序,解决方法就是嵌入进去就把焦点失去给到别的窗口

' 设置新的扩展样式,增加分层样式
SetWindowLong(hWnd, GWL_EXSTYLE, extendedStyle Or WS_EX_LAYERED Or WS_EX_NOACTIVATE)

http://www.dtcms.com/a/449603.html

相关文章:

  • 兰州做网站 东方商易怎么样做美术招生信息网站
  • 酒店客房管理系统|基于SpringBoot和Vue的酒店客房管理系统(源码+数据库+文档)
  • AI编程开发系统019-基于Vue+SpringBoot的邮件收发系统(源码+部署说明+演示视频+源码介绍+lw)
  • 做海免费素材网站排版设计模板
  • 212-基于Python的老人健康管理系统
  • 万能格式文件查看工具,支持查看图像、音视频和文档等,免安装超方便!
  • 做食品企业网站的费用wordpress文章图片全屏浏览
  • 韩国免费行情网站的推荐理由外贸 wordpress
  • 嵌入式开发核心知识点详解教程
  • 操作系统应用开发(二十六)RustDesk tls证书不匹配错误—东方仙盟筑基期
  • 如何制作个人网站住建局查询房产信息
  • 西安网站建设hyk123wordpress帖子添加代码
  • 乐理知识学习内容
  • 新手SEO教程:高效提升网站访问量的实用技巧与策略
  • 代码文件内容
  • 一款基于ESP32的导航小车
  • 自己建设网站赚钱湘潭网站建设 要选磐石网络
  • Python图形界面——TKinter
  • 深圳策划公司网站建设大型网站制作品牌
  • Django 配置与安装完整指南
  • seo网站优化方法网站建设技术指标
  • Javaweb(BeanUtils)
  • Oracle数据库imp/exp
  • 自己做的网站怎么上传手机百度网页版主页
  • 昆明网站定制建设项目验收在哪个网站公示
  • 大模型开发 - 01 Spring AI 核心特性一览
  • 手赚网 类似网站怎么建设在局域网内访问本机的asp网站
  • AS5600 驱动(HAL库400K硬件IIC+DMA、1MHZ软件IIC)
  • Oracle OCP认证考试题目详解082系列第1题
  • 做网站公司是干什么的安徽工程建设信息网实名制查询