无忧启动论坛

标题: 【已解决,版主请帮忙删下此贴】 [打印本页]

作者: yulon    时间: 2009-9-23 13:04
标题: 【已解决,版主请帮忙删下此贴】
最近做PE3.0的时候一直很困惑,为何Explorer作Shell的PE就不能显示壁纸,而BSExplorer作Shell的PE就可以,

一直认为是“外观与个性化不可用”导致的,而到今天我才恍然大悟,

我在正常系统中切换到“Windows 经典”主题,才发现,原来,不光是PE,在Win7中,只要设置为经典主题,壁纸就不可用,取而代之的是设置背景颜色···

所以说,如果要设置壁纸,必须使用Basic或Aero主题···很显然,PE作为维护系统,没必要开启那么庞大的主题···


直路不通,也只能去想歪路,据我所知桌面应该是分为四层的,倒不如由PECMD生成一个壁纸的窗口,然后嵌入在桌面的层当中···




PS:以上纯属小白言论,如有错误,请版主立即删除···

[ 本帖最后由 yulon 于 2009-9-28 17:18 编辑 ]
作者: sratlf    时间: 2009-9-23 19:41
貌似以前有人说过这个问题  然后给了个解决方案  就是不太成熟  需要使用IrfanView

IrfanView将图片设置为墙纸的功能就能把图片设置为墙纸   就是需要进系统后手动设置才行
作者: yulon    时间: 2009-9-24 19:44
原帖由 sratlf 于 2009-9-23 19:41 发表
貌似以前有人说过这个问题  然后给了个解决方案  就是不太成熟  需要使用IrfanView

IrfanView将图片设置为墙纸的功能就能把图片设置为墙纸   就是需要进系统后手动设置才行




你完全没有听懂我的意思,我是说用Explorer作Shell·········BSExplorer的,PECMD就能设壁纸····
作者: sratlf    时间: 2009-9-24 20:15
原帖由 yulon 于 2009-9-24 19:44 发表




你完全没有听懂我的意思,我是说用Explorer作Shell·········BSExplorer的,PECMD就能设壁纸····



我知道你的意思  那个也是explorer的   但是是用IrfanView强行设置的壁纸   我只是单纯说这个事实   看到你的帖子想起来有这回事   就直接回了
作者: yulon    时间: 2009-9-24 20:23
原帖由 sratlf 于 2009-9-24 20:15 发表



我知道你的意思  那个也是explorer的   但是是用IrfanView强行设置的壁纸   我只是单纯说这个事实   看到你的帖子想起来有这回事   就直接回了





不可能的事···无图无真相,你要是能截图,我就给你磕头~

还有,我说的是做Shell,explorer做shell···
作者: sratlf    时间: 2009-9-24 20:59
原帖由 yulon 于 2009-9-24 20:23 发表





不可能的事···无图无真相,你要是能截图,我就给你磕头~

还有,我说的是做Shell,explorer做shell···



信不信由你  就是explorer做的shell   不是bsexplorer   这是我以前看的了   在一个个人博客上   我自己没有试验过   还有  说话别那么刺   你永远不知道你所知道的不可能究竟可不可能实现
作者: yulon    时间: 2009-9-24 21:22
标题: 回复 #6 sratlf 的帖子
可能话有些刺,抱歉,只是太想知道真相了···
作者: lxl1638    时间: 2009-9-25 02:34
你说的是Win7PE吧,本人试过,现在所见到的Win7PE就算用IrfanView也无法设置壁纸。
对VistaPE来说,只能应用BMP文件才能设置壁纸,这个时候PECMD.EXE是有效的。
在VistaPE系统中,系统自身所带的画图也只能用BMP设置壁纸,而JPG不管如何弄都无效。

对NT5.x系列PE来说,PECMD.EXE可以将BMP、JPG文件设置成壁纸,可以说是100%成功的。

如果在NT5.x系列PE中用PECMD不能设置壁纸,只能说这个PE系统有问题,
本人手头上一个32M的PE都可以用PECMD.EXE设置壁纸,不管是启动过程中或启动以后。

如果你发现有哪个Win7PE可以用IrfanView设置壁纸的话,传上论坛,本人再看看。

[ 本帖最后由 lxl1638 于 2009-9-25 17:23 编辑 ]
作者: sratlf    时间: 2009-9-25 16:10
其实回完贴我就在找了   不过时间太长真的忘了在哪个网站上看到的了   几个月以前把   好像还是在win7测试版的时候了   我再找找
作者: 小咕咚    时间: 2009-9-25 20:29
已经帮你找到,不过本人测试没通过!
http://bbs.wuyou.net/forum.php?m ... amp;extra=page%3D24
作者: yulon    时间: 2009-9-25 20:39
原帖由 小咕咚 于 2009-9-25 20:29 发表
已经帮你找到,不过本人测试没通过!
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=147214&extra=page%3D24



很老的帖子···

那是PE2.1···

3.0的话,绝对是BSExplorer做shell的PE~

[ 本帖最后由 yulon 于 2009-9-26 20:03 编辑 ]
作者: sratlf    时间: 2009-9-25 21:08
标题: 回复 #10 小咕咚 的帖子
恩  就是这个  我竟然忘了在无忧找了  失误   当时还没权限  没办法下载ftp   所以就没有试验   抱歉了
作者: 玄天    时间: 2009-9-25 21:39
bs根本不具交互性, 用它还不如直接命令行!
NT61PE的壁纸牵涉到传真和图片查看(包括可移动磁盘的自动运行),桌面幻灯/桌面主题,貌似还与WindowsPowerShell有关,本来当初还以为可用使用XP的传真和图片查看取代,结果取代后才发现只能看图而已:)
不过有一点可用肯定的是, winpeshl.exe 是可以加载壁纸的, 本人不懂编程只好瞎说,  是否可用这东东的某个参数作下文章?

[ 本帖最后由 玄天 于 2009-9-25 21:54 编辑 ]
作者: 270979789    时间: 2009-9-25 23:55
我只知道NT5.x使用SystemParametersInfoA函数设置壁纸的话必须将图片转换为BMP图片,NT6.x可将GDI+所支持的图片格式设为壁纸。装有双系统的可以查看注册表HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper,NT5.x的必定是BMP图片,而NT6.x的可以是JPG、GIF、PNG等。其实不管用什么图片系统最终显示出来的都是BMP。PE3.0分明是有意不让设置壁纸。如果桌面图标不被描绘的图片覆盖的话,创建一个时钟程序不停描绘一张图片达到显示壁纸的效果。

[ 本帖最后由 270979789 于 2009-9-26 00:31 编辑 ]
作者: 270979789    时间: 2009-9-26 17:49
在EXPLORER进程中插入图片,和显示壁纸效果一样,成功几率比较小,N次成功1次。

Windows Vista-2009-09-26-17-44-46.jpg (126.8 KB, 下载次数: 17)

Windows Vista-2009-09-26-17-44-46.jpg

作者: xuejian0316    时间: 2009-9-26 17:50
不知道好不好啊~!!!!!!!!!!!!
作者: lxl1638    时间: 2009-9-26 18:02
原帖由 270979789 于 2009-9-26 17:49 发表
在EXPLORER进程中插入图片,和显示壁纸效果一样,成功几率比较小,N次成功1次。



如何实现?HOOK?
作者: yulon    时间: 2009-9-26 18:39
标题: 回复 #15 270979789 的帖子
和我想的一样···问题就是E程序太大了···

PS: 源码发上来,研究研究···
作者: 270979789    时间: 2009-9-26 18:59
标题: 回复 #17 lxl1638 的帖子 #18 yulon 的帖子
原理很简单,讲出流程基本都会。精简版不能通过,可能是缺少smss.exe的缘故。
1.枚举桌面SysListView32控件句柄。
2.打开Explorer进程写入LVBKIMAGE数据结构。
3.SendMessageA (控件句柄, 4164, 0, 数据结构内存地址)

数据类型 LVBKIMAGE
成员 ulFlags, 整数型            //2
成员 hbm, 整数型               //0   
成员 pszImage, 整数型       //图片路径内存地址
成员 cchImageMax, 整数型     //图片路径内存地址长度
成员 xOffsetPercent, 整数型   //坐标
成员 yOffsetPercent, 整数型

此方法支持JPG和BMP,必须运行Explorer后插入。

[ 本帖最后由 270979789 于 2009-9-26 19:12 编辑 ]
作者: uepon    时间: 2009-9-26 19:39
原帖由 yulon 于 2009-9-25 20:39 发表



很老的帖子··· 但我肯定,uepon前辈用的绝对是BSExplorer做shell的PE~


是Explorer。请确认。
作者: uepon    时间: 2009-9-26 19:42
PE2.1 Explorer 外壳 ,JPG文件。
作者: yulon    时间: 2009-9-26 20:03
原帖由 uepon 于 2009-9-26 19:39 发表


是Explorer。请确认。



但那是2.1···
作者: 玄天    时间: 2009-9-26 20:24
原帖由 uepon 于 2009-9-26 19:39 发表


是Explorer。请确认。

老大,以前的win7不同于现在的win7:)
其实壁纸无所谓, 微软有史以来首次发布了一个半成品操作系统, 那就是当今的 Windows 7(现在最终的7600也是所有7xxx系列中兼容性最差的一个,并且本地化文件也差很多,还有本地化翻译错误),等微软最终完善系统后壁纸应该是不成问题的(现在的桌面和WMP都是半残品)
作者: 玄天    时间: 2009-9-26 20:32
或许可以曲线救图:)
壁纸与系统内置的图片/传真查看效果(图片库可以运行,但只能在全屏幕才会显示), 如果使用 live 的照片库代替~~~~
实在无心折腾了
作者: yulon    时间: 2009-9-26 21:45
原帖由 玄天 于 2009-9-26 20:24 发表

老大,以前的win7不同于现在的win7:)
其实壁纸无所谓, 微软有史以来首次发布了一个半成品操作系统, 那就是当今的 Windows 7(现在最终的7600也是所有7xxx系列中兼容性最差的一个,并且本地化文件也差很多,还有本 ...




其实XP的兼容最差···大堆的DOS游戏都玩不来···
作者: 小咕咚    时间: 2009-9-26 23:46
楼主可以修改标题了,已经有人测试成功。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=150599&extra=page%3D1
这是本人测试截图[平铺]:

2346.JPG (62.85 KB, 下载次数: 19)

2346.JPG

作者: tzxinqing    时间: 2009-9-27 06:40
原帖由 270979789 于 2009-9-26 18:59 发表
原理很简单,讲出流程基本都会。精简版不能通过,可能是缺少smss.exe的缘故。
1.枚举桌面SysListView32控件句柄。
2.打开Explorer进程写入LVBKIMAGE数据结构。
3.SendMessageA (控件句柄, 4164, 0, 数据结构 ...

高人啊,这样会不会被误认为是病毒啊.......
作者: tzxinqing    时间: 2009-9-27 06:41
标题: 回复 #26 小咕咚 的帖子
厉害啊!支持!!!!!!!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3