用c#每日更換“必應背景圖片”為“桌面壁紙”

来源:https://www.cnblogs.com/liuzhenliang/archive/2020/04/08/AutomaticallyChangeBingWallpaper.html
-Advertisement-
Play Games

必應每天都會更換背景圖片,都非常漂亮,有的時候還十分驚艷,同時還會根據每個地區的特色不同應用不同的圖片。 下麵用c 抓取必應每天的背景圖片,並實現桌面壁紙的每天自動切換 實現思路 1.通過獲取“必應”網頁背景圖片URL 2.下載圖片到本地 3.設置這個圖片為壁紙 4.每日自動切換壁紙 1.創建項目文 ...


在這裡插入圖片描述
必應每天都會更換背景圖片,都非常漂亮,有的時候還十分驚艷,同時還會根據每個地區的特色不同應用不同的圖片。
下麵用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.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 六、C#字元與字元串 6.1.字元與轉義字元 1)定義 char類結構表示unicode字元。可以用來定義單個中文字元 2)方法 char c1 = 'a'; char c2 = '0'; char c3 = 'A'; Console.WriteLine(char.IsLetter(c1)); // ...
  • 問題:在webserver中接收xml參數出現了問題,提示System.Xml.XmlException: 分析 EntityName 時出錯。 webserver中的方法是前同事寫的,調用的方法和傳的參數基本都差不多,代碼也是沒有問題的,後來在百度的時候找到了問題所在: 問題就出現在xml里,因為 ...
  • 歷史原因,筆者所在公司的項目目前還在使用 .NET CORE 2.2版本,在所有業務應用升級完成服務註冊發現之後,最後剩下 Ocelot 網關服務升級。在升級過程中,遇到一些問題,記錄此文,以便有相同情況的同學參考。 1. Ocelot 升級服務發現 "根據官方文檔" ,通過簡單的添加配置,既可以將 ...
  • 項目中可能會遇到重寫控制項的情況,特此記錄下: 1 <Window x:Class="WpfApp6.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://sc ...
  • 創建一個簡單用戶控制項是開始自定義控制項的好方法。本章主要介紹創建一個基本的顏色拾取器。接下來分析如何將這個控制項分解成功能更強大的基於模板的控制項。 創建基本的顏色拾取器很容易。然而,創建自定義顏色拾取器仍是有價值的聯繫,因為這不僅演示了構建控制項的各種重要概念,而且提供了一個實用的功能。 可為顏色拾取器創 ...
  • 需求很簡單,就是文本框想要個placeholder的效果,中文的時候顯示“姓名”,英文的時候顯示“Name”,於是有了以下代碼: 然後,動態切換成英文資源的時候,發現他還是中文的,暈。後來改成以下代碼就OK了,不知和解? ...
  • public static int AddBook(BookInfo bookInfo) { using (BookDBContext dbContext = new BookDBContext()) { dbContext.BookInfo.Add(bookInfo); return (dbCon ...
  • /// <summary> /// 修改 /// </summary> /// <param name="bookInfo"></param> /// <returns></returns> public static bool Update(BookInfo bookInfo) { using ( ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...