编写C#程序,自动将bing首页图片设为壁纸

任务目标:

1,获取图片

2,设为壁纸

3,自动化

环境需求:

.NET Framework 4.0+, Visual Studio 2017

====================

1,获取图片

bing提供了一个官方的接口如下:

https://cn.bing.com/HPImageArchive.aspx?idx=0&n=1

进入可得到以下XML:

以今天的壁纸为例,图片的相对路径即红框内路径,得到图片的绝对路径为:

https://cn.bing.com/az/hprichbg/rb/ChamonixClouds_ZH-CN7700889231_1366x768.jpg

后面的1366x768可以直接更改来获得不同分辨率的图片。

自动提取的相关代码如下:

1         Regex regex = new Regex("<Url>(?<MyUrl>.*?)</Url>", RegexOptions.IgnoreCase);
2             MatchCollection collection = regex.Matches(xmlDoc);
3             // 取得匹配项列表
4             string ImageUrl = "http://www.bing.com" + collection[0].Groups["MyUrl"].Value;
5             if (true)
6             {
7                 ImageUrl = ImageUrl.Replace("1366x768", "1920x1080");
8             }

之后保存到本地,方法很多,在此不解释。

2,设置成壁纸

 1 //利用系统的用户接口设置壁纸
 2 [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
 3 public static extern int SystemParametersInfo(
 4         int uAction,
 5         int uParam,
 6         string lpvParam,
 7         int fuWinIni
 8         );
 9 public static void setWallpaperApi(string strSavePath) {10             SystemParametersInfo(20, 1, strSavePath, 1);
11         }

这里调用的是Windows的API。

3,自动化

即怎么让这个程序自动运行,这里设置为开机启动一次。

有几种方法,

第一种方法是:将可执行文件放到C:Users用户名AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup文件夹中,做到开机自启。

第二种方法是:进入注册表的HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun,添加一个字符串,内容为文件路径。

第三种方法是:找到“计划任务”(可以通过Cortana搜索到),添加这个程序进入计划任务。

Tips:

1,怎么让计划任务执行的时候不出现一闪而逝的控制台?

答:将项目变成WPF项目,窗口大小设置为1x1即可。

============================

原文地址:https://www.cnblogs.com/ldzhangyx/p/7456292.html