喵plus吧 关注:42贴子:323
  • 39回复贴,共1

【Windows】如何将窗口绘制到桌面图标下

只看楼主收藏回复

1L留空


IP属地:山东1楼2017-03-10 08:48回复
    听说Wallpaper Engineer很火的样子所以就想自己写一个,然后研究了一下相关的东西
    先说WIN8之后的版本的方法
    首先奉上原链接:
    接着我简单总结一下
    用SendMessageTimeOut函数向Program Manager窗口发送0x52c消息,wParam为0,这个消息使得桌面图标层窗口与背景层窗口的父子关系分离,也就是说这俩货毫不相干了,然后桌面会在这两个窗口之间创建一个WorkerW窗口,用于背景图案的过渡(本来这个消息就是在切换背景时使用的)
    所以这时候我们把我们的窗口设置成WorkerW的子窗口就可以将窗口绘制在图标下面了,顺便一提这时候窗口上的按钮啦文本框啦也都不会被鼠标碰到,所以如果还想让窗口能被操作就自己获取鼠标键盘消息吧= =
    然后说一下原文没说的如何销毁WorkerW窗口,发送0x52c消息,wParam设为1就好了
    wParam设为2和0一样,3和1一样
    wParam为4时返回是否能使用0x52c创建WorkerW窗口,如果WorkerW被我们手动DestroyWindow而不是用0x52c销毁这个会一直返回0


    IP属地:山东5楼2017-03-10 09:02
    回复(1)
      2025-08-24 21:21:31
      广告
      不感兴趣
      开通SVIP免广告
      然后说一下xp的绘制方法(WallpaperEngineer只能在Window7 with aero到win10的版本使用= =感觉就是直接用的上面链接里面的方法嘛)
      首先是打开“锁定Web项目”让桌面图标和背景层分离,此时Progman类名的窗口中以SHELLDLL_Defview为类名的子窗口里会变成两个子窗口,FolderView是图标层,类名为Internet Explorer_Server的窗口为背景层,将自己的窗口放在这两个窗口之间就可以了,虽然桌面图标会出现蓝色背景。。。。。。而且放在两个窗口之间的窗口一戳就自己蹦出来了= =
      正在向有没有别的好的办法


      IP属地:山东6楼2017-03-10 09:10
      回复
        百度你TM知道随手删的东西是我打了多久的成果么= =果然还是有必要建个Blog


        IP属地:山东8楼2017-03-10 09:17
        回复
          如何用c++修改“在桌面上锁定Web项目”设置
          读取这个注册表

          的GeneralFlags项,对其值进行and 2操作,得到的结果若为0表示功能被关闭,不为0表示被开启,在关闭的情况下要打开就对原值进行XOR 2操作,然后执行IActiveDesktop这个COM接口的ApplyChanges函数,要在已开启的情况下关闭就改下and 2那里的判断就行


          IP属地:山东9楼2017-03-10 09:22
          回复
            你知道0x52c消息到底是什么消息吗? 它的宏定义是什么?


            IP属地:北京10楼2017-07-12 12:18
            收起回复
              楼主能把你的代码发给我一份吗,我想参考下,谢谢了


              11楼2017-09-06 16:12
              收起回复
                楼主,我自己在写这个项目的时候遇到些问题,能把你的代码发给我一份吗,我也想参考一下,非常感谢!


                12楼2017-10-20 14:27
                收起回复
                  2025-08-24 21:15:31
                  广告
                  不感兴趣
                  开通SVIP免广告
                  靠,英文不好,果然坑爹。我磕磕巴巴的按原帖写了一通,居然只能在win10用,换到win7就不行了,完全没注意看文章里的提示。


                  IP属地:安徽13楼2018-05-20 15:46
                  回复(2)
                    请教下,为何我的win10发这个命令就不能分屏? 有一台虚拟机的win10就没问题呢?


                    IP属地:山东14楼2018-08-20 13:06
                    回复(1)
                      我做了个跟楼主类似的视频桌面小程序,但是腾讯桌面整理会跟视频桌面冲突有解决方法吗?会被腾讯桌面覆盖住,我看了火萤视频桌面能解决这个问题,不知道他是怎么做到的。


                      IP属地:上海15楼2018-11-02 22:52
                      收起回复
                        楼主您好!受教了,能否将源码给我一份。1007423165@qq.com


                        IP属地:四川16楼2019-04-20 18:55
                        回复
                          请问 WokerW窗口怎么弄出来? 就是已经有一个WorkerW了我要在它下面再弄一个


                          IP属地:广东17楼2019-09-21 16:37
                          回复
                            楼主写了blog了么?我现在遇到一个类似的问题,有的话我参考一下源码


                            IP属地:湖北18楼2020-05-19 14:51
                            回复
                              2025-08-24 21:09:31
                              广告
                              不感兴趣
                              开通SVIP免广告
                              最新版win10好像不支持活动桌面了
                              IActiveDesktop::SetDesktopItemOptions
                              IActiveDesktop::GetDesktopItemCount
                              返回not impl


                              IP属地:湖北19楼2020-05-24 20:27
                              收起回复