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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM