无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3140|回复: 8
打印 上一主题 下一主题

[原创] 启动时随机选择PE桌面背景

  [复制链接]
跳转到指定楼层
1#
发表于 2019-11-18 08:26:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前一阵研究某PE,觉得有个功能有点意思,这个PE启动时随机选择桌面背景。研究了一下,代码很简单,是将图片内置于PE中,文件名按数字规律命名,随机数产生一个匹配的文件名,然后LOGO命令设置背景。我对这个功能很有兴趣,就是有两个小问题,一是图多了的话,内置的话PE尺寸又大了不少,哪怕用PS加工过损失部分质量也很可观的;二是图像文件名、图像总个数有要求。于是决定弄个外置的、不要求文件名和文件个数的。
花了几个小时,整出个批处理来,使用7z将图像文件打包好,只要能访问到这个7z文件,在INI文件中,设置背景的命令前,使用两条语句,就能使用随机切换。
代码如下:
@Echo OFF
SetLocal ENABLEDELAYEDEXPANSION
Set count=0
Set files=
For /F "tokens=* skip=19" %%a In ('7z l -ir0^^!*.jpg %1') Do (
    Set file=%%a
    Set t=!file:~0,1!
    If !t!==- Goto SELECT
    Set t=!file:~20,1!
    If !t!==. (
        Set files=!files!"!file:~53!"
        Set /A count=count+1
    )
)
:SELECT
Set /A index=%2 %% count
For %%a In (!files!) Do (
    If !index! EQU 0 (
        Echo !index!
        Set file=%%a
        Set t=%%~na%%~xa
        Goto EXTRACT
    )
    Set /A index=index-1
)
:EXTRACT
7z e -aoa -oX:\Windows\Web\Wallpaper\Windows %1 !file!
Del X:\Windows\Web\Wallpaper\Windows\img0.jpg
Ren "X:\Windows\Web\Wallpaper\Windows\!t!" img0.jpg
Set file=
Set files=
Set count=
Set index=
Set t=


2#
 楼主| 发表于 2019-11-18 08:49:48 | 只看该作者
用法说明:
1、将需要的JPG图像打好7z压缩包,文件名、文件夹层次结构、个数随意。
2、将上面的代码保存为cmd文件。放在哪都行。
3、在INI文件的LOGO或WALL命令前,添加如下两条命令:
CALC #&index=%RANDOM%/4294967296
EXEC =*上面的批处理文件名  7z图像压缩包 %&index%
就这样。
*批处理只能支持32位整数,PECMD的64位随机数必须先处理成32位的,所以除以了4294967296,求余也可以。
*把这两句可以单独放在一个INI文件中,配合着WALL,可以随时切换桌面背景。
*这是假定桌面背景使用的是X:\Windwos\Web\Wallpaper\Windows\img0.jpg,如果PE中使用的是其它路径,把此批处理代码中的X:\Windows\Web\Wallpaper\Windows路径和文件名img0.jpg换成你真实的路径名称即可。
*这个批处理调用的是16.04的7z命令行,我没有做其它版本的试验,主要是不同版本的7z命令行输出的信息可能有差异,功能上应该是没问题的。建议使用前,命令行下执行一下7z命令,数一数开始时显示的无用信息是不是19行(包括空行)。如果不是19行,用这个行数替换掉批处理中skip=19中的19。
回复

使用道具 举报

3#
发表于 2019-11-18 10:58:15 | 只看该作者
这个好,先收藏
回复

使用道具 举报

4#
发表于 2019-11-18 11:08:11 | 只看该作者
谢谢
回复

使用道具 举报

5#
发表于 2019-11-18 16:40:17 | 只看该作者
不错,已收藏
回复

使用道具 举报

6#
发表于 2019-11-18 16:49:45 | 只看该作者
谢谢
回复

使用道具 举报

7#
发表于 2019-11-27 15:58:10 | 只看该作者
谢谢楼主分享,思路很好
回复

使用道具 举报

8#
发表于 2019-11-27 22:05:24 | 只看该作者
Random, OutputVar , 1,20
DllCall("SystemParametersInfo", UInt, 0x14, UInt, 0, Str, A_WinDir . c:\WallPaper%OutputVar%.bmp, UInt, 2)
AHK只要两行代码完成。






回复

使用道具 举报

9#
发表于 2019-11-29 22:44:29 | 只看该作者
2年前就可以实现了,可以自定义启动顺序,更换的时间,但程序不是我写的,
所以没有分享出来。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 14:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表