用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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章