编写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\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup文件夹中,做到开机自启。
第二种方法是:进入注册表的\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\,添加一个字符串,内容为文件路径。
第三种方法是:找到“计划任务”(可以通过Cortana搜索到),添加这个程序进入计划任务。
Tips:
1,怎么让计划任务执行的时候不出现一闪而逝的控制台?
答:将项目变成WPF项目,窗口大小设置为1x1即可。
============================