无符号整形 发表于 2016-9-16 10:30:49

SystemParametersInfo换壁纸

本帖最后由 无符号整形 于 2016-9-16 12:12 编辑

@拈花小仙
SystemParametersInfo函数原型:
BOOL WINAPI SystemParametersInfo(
_In_    UINTuiAction,
_In_    UINTuiParam,
_Inout_ PVOID pvParam,
_In_    UINTfWinIni
);
uiAction:该参数指定要查询或设置的参数,换壁纸是SPI_SETDESKWALLPAPER
uiParam:附加值
pvParam:要修改或者查询的缓冲区
fWinIni:指定用户配置文件是否被更新,如果是这样,则指定是否 WM_SETTINGCHANGE 将消息广播到所有的顶层窗口的更改通知他们,可以是0也可以是下列值:
SPIF_UPDATEINIFILE:把新的系统参数的设置内容写入用户配置文件。
SPIF_SENDCHANGE:在更新用户配置文件之后发送WM_SETTINGCHANGE消息。
SPI_SENDWININICHANGE:与 SPIF_SENDCHANGE一样。

那么思路就很明确了
换壁纸我们要给uiAction指定SPI_SETDESKWALLPAPER标志位,然后把SPIF_UPDATEINIFILE传递给fWinIni。
当然,pvParam要指向Unicode的位图路径,注意,是位图路径,不允许传JPG,PNG,GIF格式!! 只能传BMP格式。

我们先来随便弄一个图片,比如鱼C的logo
http://bbs.fishc.com/template/dreambred_c_apple/images//logo.png
把它用画图另存为成bmp格式

啦啦啦~实验准备完毕,可以开始了
思路:先定义一个路径指向那个位图,然后调用SystemParametersInfo函数

那么,剩下的代码就不难了,注意:1.一定要记得把路径改成你放的位图的路径
2.重点看第6行
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
const wchar_t* Path = TEXT("C:\\Users\\Oden\\Desktop\\logo.bmp");
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, (PVOID)Path, SPIF_UPDATEINIFILE);
return 0
}


秀一秀~~

换壁纸之后

拈花小仙 发表于 2016-9-16 12:23:21

@小甲鱼 支持windows api短例`

~风介~ 发表于 2016-9-16 23:06:54

拈花小仙 发表于 2016-9-16 12:23
@小甲鱼 支持windows api短例`

支持!{:10_254:}

hustjinghu 发表于 2016-11-4 21:48:40

好有用的API小李子

alltolove 发表于 2016-11-5 09:40:34

SystemParametersInfo括号里的参数都啥意思啊{:5_94:}

zzy_xus 发表于 2016-12-22 18:53:54

这个满分

啊dong1992 发表于 2016-12-26 23:15:22

膜拜大神
页: [1]
查看完整版本: SystemParametersInfo换壁纸