• 用c#每日更换“必应背景图片”为“桌面壁纸”


    在这里插入图片描述
    必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片。
    下面用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.

  • 相关阅读:
    sql语句的删除
    JDK 11中的ZGC-一种可扩展的低延迟垃圾收集器
    强大的IDEA开发工具
    微信H5支付证书过滤
    statusText 报错parsererror
    python 爬取页面数据,生成词云和网络图
    springboot 跳转页面
    org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'xxx' is not present 报错解决
    airtest 中报错 'gbk' codec can't encode character 'xa5' in position 170: illegal multibyte sequence
    Error:(5, 45) java: 程序包org.springframework.boot.test.context不存在 解决
  • 原文地址:https://www.cnblogs.com/liuzhenliang/p/AutomaticallyChangeBingWallpaper.html
Copyright © 2020-2023  润新知