当前位置: 首页 > 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 As IntPtrDefView = 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/451046.html

相关文章:

  • 中山手机网站建设电话北京seo公司华网白帽
  • 光通信|级联相变超表面实现OAM模式切换
  • wordpress零基础建站云适配 网站
  • 吴桥网站霸气业务网站源码
  • <从零基础到精通JavaScript>1.3 核心原始数据类型
  • C语言 ——— 自定义类型
  • 做网站frontpage 2003织梦网站0day漏洞
  • 龙岗建设网站wordpress录音功能
  • 内蒙网络_网站建设页面关键词优化
  • 企业做网页还是网站公司网站搜索不到
  • 做洁具最好的网站株洲网站建设公司排名
  • Java 队列详解:从基础到实战应用
  • 新网站怎么发外链关键词排名推广方法
  • 宁波网站排名提升网站修改域名
  • 国外 视频上传网站源码wordpress可以做相册吗
  • 做网站的去哪找私活wordpress手机商城
  • 如可建设淘宝链接网站零食网站建设的策划书
  • 网站建设公司的问答营销案例找做牙工作上哪个网站
  • Function Call实战效果:准确率提升86%背后的数据与思考,兼谈MCP的未来
  • 装饰公司网站建设方案小程序平台
  • 设计网站大全软件wordpress 个性化
  • 网站编程用什么语言买一个域名
  • 唐山建设局网站临漳企业做网站推广
  • 平谷区网站建设wordpress字体导入
  • 哪个网站做外链视频好游戏开发前景
  • 潍坊企业自助建站厦门做网站优化
  • 保定网站优化公司深圳网站建设与制作公司
  • 上海建设公司网站广水网站设计
  • 深圳外贸网站制作公司wordpress博客类主题
  • 南昌网站seo公司重庆网站设计制作价格