/*
2018-12-28 15:15:18
例子:通过使用接口 https://api.berryapi.net/bing/random/?200/200
来设置一个更换PC桌面小软件
*/
功能需求:
打开软件 输入所需要的分辨率需求 例如 1920*1080 这种需求
然后点击 设置桌面 就可以得到一张随机桌面
需要完成的点:
1.通过给出的URL进行图片的下载
2.得到下载的图片并设置为桌面
问题1:
通过函数 URLDownloadToFile 可实现对文件的下载
需要使用上述函数 必须加上头文件 #include <urlmon.h> 以及对应的链接库 urlmon.lib
使用TCHAR相关的函数 则需要带上头文件 tchar.h
问题2:
通过使用函数SystemParametersInfo 来设置桌面背景
功能需求大致如上 现在直接进入代码(补充接口:https://api.berryapi.net/bing/random/?200/200 由SOUI大神毛芋儿 提供)
/*
2018-12-28 15:31:17
设置壁纸
技术点1 通过URL下载文件到本地
通过URL下载文件的接口:URLDownloadToFile
函数原型:
HRESULT URLDownloadToFile(
LPUNKNOWN pCaller, //没有使用Active则设置为NULL
LPCTSTR szURL, //需要下载文件的URL
LPCTSTR szFileName, //设置存放的路径
_Reserved_ DWORD dwReserved, //保留 必须设置为0
LPBINDSTATUSCALLBACK lpfnCB //设置为NULL(常规情况下)
);
技术点2 通过得到的壁纸来设置PC的桌面
通过函数 SystemParametersInfo 既可以设置对应的结果
*/
#include <iostream>
using namespace std;
#include <windows.h>
#include <tchar.h>
#include <urlmon.h>
int main()
{
//获取路径
TCHAR szCurrentDir[MAX_PATH] = { 0 };
GetModuleFileName(NULL, szCurrentDir, sizeof(szCurrentDir));
(_tcsrchr(szCurrentDir, _T('\\')))[1] = 0;
_tcscat(szCurrentDir, L"backgnd.jpg");
TCHAR url[] = L"https://api.berryapi.net/bing/random/?1920/1080";
HRESULT FileStatus = URLDownloadToFileW(NULL, url, (LPCTSTR)szCurrentDir, 0, NULL);
if (S_OK != FileStatus)
{
cout << "File Download fail";
return EXIT_FAILURE;
}
//设置桌面背景图片
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, szCurrentDir, SPIF_UPDATEINIFILE);
cout << "设置壁纸成功" << endl;
system("pause");
return 0;
}
这里涉及的函数 都是常用的系统调用函数 通过查阅MSDN应该能够清晰理解
这样一款简单实用的更换桌面的小软件就制作完成了(完全可以把这个作为一个小模块进行 代码移植)
效果图: