计算机编程桌面背景图片,技术分享 - 使用SystemParametersInfo函数实现更改计算机桌面背景图片...

背景

有一天,Q群里的一个群友向群里提问,怎么用编程实现更改计算机的桌面。好吧,这个功能我之前没有做过,自然也不知道该怎么回答,作为一群之主,也只能勉为其难地上网去搜索下资料,给人一个答复才行啊。

经过查询,了解到了使用 SystemParametersInfo 函数就可以实现,而且这个函数功能还是很强的,设置桌面墙纸只是其中一个功能,还能设置屏保、设置屏保时间等等,基本上计算机里大部分的设置,都会使用到 SystemParametersInfo 这个函数。

现在,我就讲解下实现原理和过程,写成文档分享给大家。

函数介绍检索或设置系统范围参数之一的值。 此功能还可以在设置参数时更新用户配置文件。

函数声明

BOOL WINAPISystemParametersInfo(

_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 函数介绍可以知道,该函数除了可以可以设置桌面参数之外,还可以对图标参数、菜单参数、电源参数、屏幕保护参数等进行设置。本文主要讲解的是对桌面背景图片的更改,也就是只讲下修改桌面参数,其他功能的使用都类似。

修改桌面背景图片的关键代码是:

::SystemParametersInfo(SPI_SETDESKWALLPAPER,0,szPicturePath,0)

第一个参数指定修改的参数类型 SPI_SETDESKWALLPAPER 设置桌面墙纸,第三个参数是墙纸图片的路径,注意路径要求是绝对路径,不能是相对路径。

编码实现BOOLSetDeskWallpaper(char*pszFileName)

{

// 路径要求 绝对路径 !!

if(FALSE==::SystemParametersInfo(SPI_SETDESKWALLPAPER,0,pszFileName,0))

{

ShowError("SystemParametersInfo");

returnFALSE;

}

returnTRUE;

}

程序测试

直接运行程序,桌面背景图片成功更换。

总结

墙纸图片的路径一定要是绝对路径才能设置成功,使用相对路径,会设置不成功。对于本文介绍的这种修改墙纸的方法,墙纸设置成功,重启电脑后,又会还原回去。所以,这点需要注意。

参考

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值