一、设置Windows壁纸
将电脑上的图片设置为壁纸,代码如下:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
const int SPI_SETDESKWALLPAPER = 20;
const int SPIF_UPDATEINIFILE = 0x1;
public void SetWallpaper(string path)
{
try
{
if (!File.Exists(path))
{
return;
}
FileLogger.Info($"set wallpaper: {path}");
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE);
}
catch (Exception ex)
{
FileLogger.Error(ex.ToString());
}
}
二、随机给windows设置一张壁纸
这里推荐一个接口,可以获取到Bing壁纸:
https://api.vvhan.com/api/bing?type=json //获取今日壁纸
https://api.vvhan.com/api/bing?type=json&rand=sj //获取随机壁纸
返回结果如下:
{
"success": true,
"data": {
"date": 20240623,
"title": "达卡环形交叉路口的鸟瞰图,孟加拉国 (© Azim Khan Ronnie/Amazing Aerial Agency)",
"url": "https://cn.bing.com/th?id=OHR.DhakaBangladesh_ZH-CN6777866162_1920x1080.jpg"
}
}
之后将图片下载下来,使用上文中的方法就可以实现随机设置一张壁纸的功能了
从URL下载图片的方法如下:
public bool SavePhotoFromUrl(string fileName, string url)
{
bool value = false;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
if (!response.ContentType.ToLower().StartsWith("text/"))
{
value = SaveBinaryFile(response, fileName);
}
}
catch (Exception err)
{
FileLogger.Error(err.ToString());
}
return value;
}
private bool SaveBinaryFile(WebResponse response, string FileName)
{
bool Value = true;
byte[] buffer = new byte[1024];
try
{
if (File.Exists(FileName))
File.Delete(FileName);
Stream outStream = System.IO.File.Create(FileName);
Stream inStream = response.GetResponseStream();
int l;
do
{
l = inStream.Read(buffer, 0, buffer.Length);
if (l > 0)
outStream.Write(buffer, 0, l);
}
while (l > 0);
outStream.Close();
inStream.Close();
}
catch
{
Value = false;
}
return Value;
}
我自己开发了一个随机壁纸小软件,免费无毒无广,欢迎下载使用