必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片。 下面用c#抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换
使用windows 窗体应用程序可以不用像控制台应用程序一样弹出黑框
using system; using system.io; using system.net; using system.runtime.interopservices; using system.text; using system.text.regularexpressions; using microsoft.win32; using system.windows.forms;
我们需要先下载得到“必应”这个网页文件,然后找到他的背景图片url,并提取出来,这里我就需要使用webclient对象实现下载网页文件的操作,需要使用regex对象实现提取出背景图片url操作 这个就是“必应”网页背景图片url 下载网页文件并提取图片url代码
/// <summary> /// 获取必应图片 /// </summary> /// <returns>必应图片url</returns> private static string getbingimageurl() { using (var client = new webclient()) { //设置下载的html文件的编码为utf-8 client.encoding = encoding.utf8; //下载必应中国的首页html文件 var html = client.downloadstring("https://cn.bing.com/"); //使用正则得到背景图片地址 var match = regex.match(html, "id=\"bglink\".*?href=\"(.+?)\""); //得到背景图片url return string.format("https://cn.bing.com{0}", match.groups[1].value); } }
我们使用 webclient 对象来进行下载图片文件操作,然后使用path对象来获取系统临时文件路径,和拼接出保存图片文件的路径
/// <summary> /// 下载图片并存储到临时文件夹下 /// </summary> /// <param name="url">图片url</param> /// <returns>保存下载图片文件的路径</returns> private static string downloadimageandsavefile(string url) { using (var client = new webclient()) { //创建临时文件目录下的存储必应图片的绝对路径 var filepath = path.combine(path.gettemppath(), "bing.jpg"); //将图片下载到这个路径下 client.downloadfile(url, filepath); //返回当前图片路径 return filepath; } }
使用windows系统函数
/// <summary> /// windows系统函数 /// </summary> [dllimport("user32.dll", entrypoint = "systemparametersinfo")] public static extern int systemparametersinfo( int uaction, int uparam, string lpvparam, int fuwinini );
设置壁纸操作
//设置壁纸 systemparametersinfo(20, 0, filepath, 2);
运行效果
/// <summary> /// 向注册表注册开机自启 /// win10需要使用系统管理员权限运行vs才能调试,同理启动这个程序也需要系统管理员权限运行 /// 这个只需要成功注册一次,后面就可以开机自动启动此程序了 /// </summary> public static void setexecselfstarting() { try { var execpath = application.executablepath; //当前程序路径 using (var rk = registry.localmachine) { var resigetrypath = environment.is64bitoperatingsystem //判断是否为64位系统 ? "software\\wow6432node\\microsoft\\windows\\currentversion\\run" : "software\\microsoft\\windows\\currentversion\\run"; using (var rk2 = rk.createsubkey(resigetrypath)) { if (rk2 == null) return; var value = rk2.getvalue("automaticwallpaperchange") ?? string.empty; if (execpath.equals(value.tostring(), stringcomparison.ordinalignorecase)) return; rk2.setvalue("automaticwallpaperchange", execpath); } } } catch (exception ex) { console.writeline(ex); } }
下载源码: https://github.com/liu-zhen-liang/automaticallychangebingwallpaper.
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论