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