首页 技术 正文
技术 2022年11月21日
0 收藏 888 点赞 4,634 浏览 2578 个字

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

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

实现思路

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

1.创建项目文件

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

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

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

  • 4.在Main方法中添加引用
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;

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

我们需要先下载得到“必应”这个网页文件,然后找到他的背景图片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);
}
}

3.下载图片到本地

我们使用 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;
}
}

4.设置这个图片为壁纸

使用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);

运行效果

5.每日自动切换壁纸

方案一、设置程序自启动

/// <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);
}
}

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

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

6.获取源码 链接

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

上一篇: Jedis连接外部Redis
下一篇: B - Charlie's Change
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,991
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,506
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,766
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844