dengtingwen 发表于 2024-5-26 20:23:38

请教:使用AUTOIT如何修改桌面壁纸

请教:使用AUTOIT如何修改桌面壁纸

skysmile 发表于 2024-5-28 13:28:21

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 下面新增
Wallpaper 字符串项(图片位置)
WallpaperStyle 字符串项 (0居中 1平铺 2拉伸)
刷新下explorer
恢复就删除这两个字符串项

sliqi 发表于 2024-5-28 23:07:37

原来收藏过一个。你看下。#include <GDIPlus.au3>

Global Const $SPI_SETDESKWALLPAPER = 0x0014
Global Const $SPIF_UPDATEINIFILE = 0x01
Global Const $SPIF_SENDCHANGE = 0x01
$jpg=FileOpenDialog("选择文件",@ScriptDir,"图像文件 (*.jpg;*.bmp;*.png;*.tif)",1)
$path=@AppDataDir&"\Microsoft\Wallpaper1.bmp"

_GDIPlus_Startup ()
$hImage = _GDIPlus_ImageLoadFromFile ($jpg)
_GDIPlus_ImageSaveToFile ($hImage, $path)
_GDIPlus_ImageDispose ($hImage)
_GDIPlus_ShutDown ()

dllcall("user32","int","SystemParametersInfo","int",$SPI_SETDESKWALLPAPER,"int",1,"str",$path,"int",BitOR($SPIF_UPDATEINIFILE,$SPIF_SENDCHANGE))

顽固不化 发表于 2024-5-29 11:34:40

壁纸这块,还真有一些值得研究的。

顽固不化 发表于 2024-6-2 10:25:42

sliqi 发表于 2024-5-28 23:07
原来收藏过一个。你看下。

测试在win10,这样也行。

$path=FileOpenDialog("选择文件",@ScriptDir,"图像文件 (*.jpg;*.bmp;*.png;*.tif)",1)
If FileExists($path)Then        dllcall("user32","int","SystemParametersInfo","int",0x0014,"int",1,"str",$path,"int",BitOR(0x01,0x01))

afan 发表于 2024-6-2 21:02:26

sliqi 发表于 2024-5-28 23:07
原来收藏过一个。你看下。

常量 $SPIF_SENDCHANGE 的值应该是 0x02

afan 发表于 2024-6-2 21:03:41

顽固不化 发表于 2024-6-2 10:25
测试在win10,这样也行。

BitOR(0x01,0x01) 没有意义,如上所述,应该是 BitOR(0x01, 0x02)

顽固不化 发表于 2024-6-2 22:14:40

本帖最后由 顽固不化 于 2024-6-4 08:57 编辑

afan 发表于 2024-6-2 21:03
BitOR(0x01,0x01) 没有意义,如上所述,应该是 BitOR(0x01, 0x02)
谢谢fan哥,您观察的真仔细。订正如下:

$path=FileOpenDialog("选择文件",@ScriptDir,"图像文件 (*.jpg;*.bmp;*.png;*.tif)",1)
If FileExists($path)Then      dllcall("user32","int","SystemParametersInfo","int",0x0014,"int",1,"str",$path,"int",BitOR(0x01,0x02))

页: [1]
查看完整版本: 请教:使用AUTOIT如何修改桌面壁纸