# 使用SystemParametersInfo函数实现更改计算机桌面背景图片
# 背景
有一天,Q群里的一个群友向群里提问,怎么用编程实现更改计算机的桌面。好吧,这个功能我之前没有做过,自然也不知道该怎么回答,作为一群之主,也只能勉为其难地上网去搜索下资料,给人一个答复才行啊。
经过查询,了解到了使用 SystemParametersInfo 函数就可以实现,而且这个函数功能还是很强的,设置桌面墙纸只是其中一个功能,还能设置屏保、设置屏保时间等等,基本上计算机里大部分的设置,都会使用到 SystemParametersInfo 这个函数。
现在,我就讲解下实现原理和过程,写成文档分享给大家。
# 函数介绍
> 检索或设置系统范围参数之一的值。 此功能还可以在设置参数时更新用户配置文件。
>
> 函数声明
>
> ```c++
> BOOL WINAPI SystemParametersInfo(
> _In_ UINT uiAction,
> _In_ UINT uiParam,
> _Inout_ PVOID pvParam,
> _In_ UINT fWinIni
> );
> ```
>
> 参数
>
> - uiAction [in]
> 要检索或设置的系统范围的参数。 可能的值组织在以下相关参数表中:
>
> 辅助功能参数
> 桌面参数
> 图标参数
> 输入参数
> 菜单参数
> 电源参数
> 屏幕保护参数
> 超时参数
> UI效果参数
> 窗口参数
>
> - uiParam [in]
> 使用和格式取决于要查询或设置的系统参数的参数。 有关系统范围参数的更多信息,请参阅uiAction参数。 如果没有另外指出,您必须为此参数指定零。
>
> - pvParam [in,out]
> 使用和格式取决于要查询或设置的系统参数的参数。 有关系统范围参数的更多信息,请参阅uiAction参数。 如果没有另外指出,您必须为此参数指定NULL。 有关PVOID数据类型的信息,请参阅Windows数据类型。
>
> - fWinIni [in]
> 如果正在设置系统参数,则指定是否要更新用户配置文件,如果是,是否将WM_SETTINGCHANGE消息广播到所有顶级窗口,以通知他们更改。
>
> 返回值
>
> - 如果函数成功,则返回值为非零值。
> - 如果函数失败,返回值为零。 要获取扩展错误信息,请调用GetLastError。
# 实现原理
由上面的 SystemParametersInfo 函数介绍可以知道,该函数除了可以可以设置桌面参数之外,还可以对图标参数、菜单参数、电源参数、屏幕保护参数等进行设置。本文主要讲解的是对桌面背景图片的更改,也就是只讲下修改桌面参数,其他功能的使用都类似。
修改桌面背景图片的关键代码是:
```c++
::SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, szPicturePath, 0)
```
第一个参数指定修改的参数类型 SPI_SETDESKWALLPAPER 设置桌面墙纸,第三个参数是墙纸图片的路径,注意路径要求是绝对路径,不能是相对路径。
# 编码实现
```c++
BOOL SetDeskWallpaper(char *pszFileName)
{
// 路径要求 绝对路径 !!
if (FALSE == ::SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pszFileName, 0))
{
ShowError("SystemParametersInfo");
return FALSE;
}
return TRUE;
}
```
# 程序测试
直接运行程序,桌面背景图片成功更换。
# 总结
墙纸图片的路径一定要是绝对路径才能设置成功,使用相对路径,会设置不成功。对于本文介绍的这种修改墙纸的方法,墙纸设置成功,重启电脑后,又会还原回去。所以,这点需要注意。
# 参考
参考自《[Windows黑客编程技术详解](https://www.write-bug.com/article/1811.html "Windows黑客编程技术详解")》一书
没有合适的资源?快使用搜索试试~ 我知道了~
精选_使用SystemParametersInfo函数实现更改计算机桌面背景图片_源码打包
共14个文件
cpp:3个
h:3个
vcxproj:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 32 浏览量
2022-03-09
16:27:03
上传
评论
收藏 187KB ZIP 举报
温馨提示
使用SystemParametersInfo函数实现更改计算机桌面背景图片
资源推荐
资源详情
资源评论
收起资源包目录
7709467163035916.zip (14个子文件)
systemparametersinfo
src
SystemParametersInfo_Test.sln 999B
SystemParametersInfo_Test.v12.suo 29KB
SystemParametersInfo_Test
stdafx.h 219B
SystemParametersInfo_Test.vcxproj.filters 1KB
SystemParametersInfo_Test.cpp 316B
ReadMe.txt 2KB
SetDeskWallpaper.cpp 471B
SetDeskWallpaper.h 140B
stdafx.cpp 223B
targetver.h 228B
SystemParametersInfo_Test.vcxproj 5KB
Debug
SystemParametersInfo_Test.exe 523KB
LICENSE 1KB
README.md 4KB
共 14 条
- 1
资源评论
工具盒子
- 粉丝: 58
- 资源: 1313
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功