必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片。

下面用c#抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换

实现思路

  • 1.通过获取“必应”网页背景图片URL
  • 2.下载图片到本地
  • 3.设置这个图片为壁纸
  • 4.每日自动切换壁纸

1.创建项目文件

使用Windows 窗体应用程序可以不用像控制台应用程序一样弹出黑框

  • 1.先创建 Windows 窗体应用
  • 2.删除窗体文件【这样不会有任何东西弹出】

  • 3.将Program.cs的Main方法中之前的代码删除

  • 4.在Main方法中添加引用
  1. using System;
  2. using System.IO;
  3. using System.Net;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using System.Text.RegularExpressions;
  7. using Microsoft.Win32;
  8. using System.Windows.Forms;

2.通过获取“必应”网页背景图片URL

我们需要先下载得到“必应”这个网页文件,然后找到他的背景图片URL,并提取出来,这里我就需要使用WebClient对象实现下载网页文件的操作,需要使用Regex对象实现提取出背景图片URL操作

这个就是“必应”网页背景图片URL



下载网页文件并提取图片URL代码

  1. /// <summary>
  2. /// 获取必应图片
  3. /// </summary>
  4. /// <returns>必应图片URL</returns>
  5. private static string GetBingImageUrl()
  6. {
  7. using (var client = new WebClient())
  8. {
  9. //设置下载的HTML文件的编码为UTF-8
  10. client.Encoding = Encoding.UTF8;
  11. //下载必应中国的首页HTML文件
  12. var html = client.DownloadString("https://cn.bing.com/");
  13. //使用正则得到背景图片地址
  14. var match = Regex.Match(html, "id=\"bgLink\".*?href=\"(.+?)\"");
  15. //得到背景图片URL
  16. return string.Format("https://cn.bing.com{0}", match.Groups[1].Value);
  17. }
  18. }

3.下载图片到本地

我们使用 WebClient 对象来进行下载图片文件操作,然后使用Path对象来获取系统临时文件路径,和拼接出保存图片文件的路径

  1. /// <summary>
  2. /// 下载图片并存储到临时文件夹下
  3. /// </summary>
  4. /// <param name="url">图片URL</param>
  5. /// <returns>保存下载图片文件的路径</returns>
  6. private static string DownloadImageAndSaveFile(string url)
  7. {
  8. using (var client = new WebClient())
  9. {
  10. //创建临时文件目录下的存储必应图片的绝对路径
  11. var filePath = Path.Combine(Path.GetTempPath(), "bing.jpg");
  12. //将图片下载到这个路径下
  13. client.DownloadFile(url, filePath);
  14. //返回当前图片路径
  15. return filePath;
  16. }
  17. }

4.设置这个图片为壁纸

使用Windows系统函数

  1. /// <summary>
  2. /// Windows系统函数
  3. /// </summary>
  4. [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
  5. public static extern int SystemParametersInfo(
  6. int uAction,
  7. int uParam,
  8. string lpvParam,
  9. int fuWinIni
  10. );

设置壁纸操作

  1. //设置壁纸
  2. SystemParametersInfo(20, 0, filePath, 2);

运行效果

5.每日自动切换壁纸

方案一、设置程序自启动

  1. /// <summary>
  2. /// 向注册表注册开机自启
  3. /// Win10需要使用系统管理员权限运行VS才能调试,同理启动这个程序也需要系统管理员权限运行
  4. /// 这个只需要成功注册一次,后面就可以开机自动启动此程序了
  5. /// </summary>
  6. public static void SetExecSelfStarting()
  7. {
  8. try
  9. {
  10. var execPath = Application.ExecutablePath; //当前程序路径
  11. using (var rk = Registry.LocalMachine)
  12. {
  13. var resigetryPath = Environment.Is64BitOperatingSystem //判断是否为64位系统
  14. ? "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"
  15. : "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
  16. using (var rk2 = rk.CreateSubKey(resigetryPath))
  17. {
  18. if (rk2 == null) return;
  19. var value = rk2.GetValue("AutomaticWallpaperChange") ?? string.Empty;
  20. if (execPath.Equals(value.ToString(), StringComparison.OrdinalIgnoreCase)) return;
  21. rk2.SetValue("AutomaticWallpaperChange", execPath);
  22. }
  23. }
  24. }
  25. catch (Exception ex)
  26. {
  27. Console.WriteLine(ex);
  28. }
  29. }

方案二、设置Windows的 任务计划程序

  • 1.打开Windows的 任务计划程序
  • 2.创建 定时任务
  • 3.设置每天 9点启动 更换成“必应”背景图片为壁纸的程序













6.获取源码 链接

下载源码: https://github.com/liu-zhen-liang/AutomaticallyChangeBingWallpaper.

用c#每日更换“必应背景图片”为“桌面壁纸”的更多相关文章

  1. Python实用案例,Python脚本,Python实现每日更换“必应图片”为“桌面壁纸”

    往期回顾 Python实现自动监测Github项目并打开网页 Python实现文件自动归类 Python实现帮你选择双色球号码 前言: 今天我们就利用python脚本实现每日更换"必应图片& ...

  2. 初学ToggleButton 点击button,更换button背景图片;再次点击,恢复之前背景图

    上方的图标,R.drawable.register_checked  是选中图片 下方的图标,   R.drawable.register_unchecked 是未选中图片 默认是上方的选中效果.点击 ...

  3. idea 更换编辑器背景图片

    插件名称是:BackgroundImage, 安装后效果图

  4. Android 如何更换屏幕上锁界面背景图片

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  5. WPF 渐隐渐现切换背景图片

    最近学习WPF,尝试着自己做一些小玩意,也遇到了一些问题,于是整理记录以便日后查阅. 我们都知道WPF可以实现一些很炫的效果,然而有时候为达到这个目的却并不是一件很容易的事情.比如:在软件中我希望能够 ...

  6. Qt 设置背景图片3种方法(QPalette可以做无数的事情,一旦控件指定了调色板,就要乖乖听它的话;QPainter当场绘制当然也没有问题,还有就是QSS)

    方法1. setStylSheet{"QDialog{background-image:url()"}}  //使用styleSheet 这种方法的好处是继承它的dialog都会自 ...

  7. 将Chrome插件Momentum背景图片设为桌面壁纸

    Momentum简介 Momentum插件是一款自动更换壁纸,自带时钟,任务日历和工作清单的chrome浏览器插件.官方的解释就是:替换你 Chrome 浏览器默认的“标签页”.里面的图片全部来自50 ...

  8. js 定时更改div背景图片

    今天遇到一个业务场景,使用js将一个div标签的背景图片定时更换一下. 之前百度了几个,有css+js,也有css3的,不过css3的兼容有问题,之后同事提示,可以使用js直接来更换div的北京图片, ...

  9. win10更换登陆背景和关闭锁屏

    更换登陆背景图 用国外一个hacker写的工具,可在github上下载,或者下载我上传到百度网盘的备份.win10默认的登陆背景太难看了. 去掉锁屏图片 登陆界面其实本身就是一种锁屏,为什么还要单独搞 ...

随机推荐

  1. 分享一个基于Net Core 3.1开发的模块化的项目

    先简单介绍下项目(由于重新基于模块化设计了整个项目,所以目前整个项目功能不多) 1.Asp.Net Core 3.1.2+MSSQL2019(LINUX版) 2.中间件涉及Redis.RabbitMQ ...

  2. 添加谷歌拓展程序 vue.js devtools过程中的问题

    在用vue做项目过程中,需要用到vue.js devtools,在从github上面clone下来代码,然后再npm install ,过程报错,然后更新npm包也是会有问题,以下是install的问 ...

  3. 01 ORM框架概述

    ORM概述 ORM(Object-Relational Mapping) 表示对象关系映射.在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中.只要有一套程序能够做到建立对象与数据库 ...

  4. 上海月薪 1w 和家乡月薪 5000 你选择哪?

    如题,这是我在知乎上看到的一个热门话题--要现在的我来回答的话,毫无疑问会选择上海,即便月薪只有 5000 也去,还要趁早去. 有读者可能会质问我:"你之前不是说在三线城市洛阳工作很爽吗?怎 ...

  5. 玩转控件:重写/重绘Dev中MessageBox弹窗控件

    很久没有更新博客了,本想着直接发一篇<手撕ERP>系列,从控件重写.重绘,到框架搭建,再到部分模块实现+业务的.但是每次动手的时候,都觉得难以下手.直接从数据库设计开始吧,模块设计还没定下 ...

  6. (转)ARM GNU常用汇编语言介绍

    ARM GNU常用汇编语言介绍 原文地址:http://zqwt.012.blog.163.com/blog/static/120446842010445441611/ ARM汇编语言源程序语句,一般 ...

  7. C 和 C++语言中的内存拷贝函数memcpy()

    memcpy指的是C和C++使用的内存拷贝函数 函数原型为void *memcpy(void *destin, void *source, unsigned n): 函数的功能是从源内存地址的起始位置 ...

  8. 何为内存模型(JMM)?

    前言 任何一门语言都有其语言规范,从逻辑上我们可划分为语法规范和语义规范,语法规范则是描述了如何通过相关语法编写可执行的程序,而语义规范则是指通过语法编写的程序所构造出的具体含义.语言只要具备存储(比 ...

  9. gulp常用的插件

    参考地址: http://www.cnblogs.com/1wen/p/5421212.html https://my.oschina.net/wolfx/blog/673905 http://www ...

  10. 利用EPX Studio将C/S程序转成B/S的方法详解(在线模块方式)

    采用 EPX 的在线模块,是最简单的方法,包括实现简单,客户端不需任何设置,客户使用就简单. 1. 设置服务器端参数(EPServer) 1.1 在服务配置工具选项卡中,设置服务项中的名称,路径,激活 ...