用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.
用c#每日更换“必应背景图片”为“桌面壁纸”的更多相关文章
- Python实用案例,Python脚本,Python实现每日更换“必应图片”为“桌面壁纸”
往期回顾 Python实现自动监测Github项目并打开网页 Python实现文件自动归类 Python实现帮你选择双色球号码 前言: 今天我们就利用python脚本实现每日更换"必应图片& ...
- 初学ToggleButton 点击button,更换button背景图片;再次点击,恢复之前背景图
上方的图标,R.drawable.register_checked 是选中图片 下方的图标, R.drawable.register_unchecked 是未选中图片 默认是上方的选中效果.点击 ...
- idea 更换编辑器背景图片
插件名称是:BackgroundImage, 安装后效果图
- Android 如何更换屏幕上锁界面背景图片
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- WPF 渐隐渐现切换背景图片
最近学习WPF,尝试着自己做一些小玩意,也遇到了一些问题,于是整理记录以便日后查阅. 我们都知道WPF可以实现一些很炫的效果,然而有时候为达到这个目的却并不是一件很容易的事情.比如:在软件中我希望能够 ...
- Qt 设置背景图片3种方法(QPalette可以做无数的事情,一旦控件指定了调色板,就要乖乖听它的话;QPainter当场绘制当然也没有问题,还有就是QSS)
方法1. setStylSheet{"QDialog{background-image:url()"}} //使用styleSheet 这种方法的好处是继承它的dialog都会自 ...
- 将Chrome插件Momentum背景图片设为桌面壁纸
Momentum简介 Momentum插件是一款自动更换壁纸,自带时钟,任务日历和工作清单的chrome浏览器插件.官方的解释就是:替换你 Chrome 浏览器默认的“标签页”.里面的图片全部来自50 ...
- js 定时更改div背景图片
今天遇到一个业务场景,使用js将一个div标签的背景图片定时更换一下. 之前百度了几个,有css+js,也有css3的,不过css3的兼容有问题,之后同事提示,可以使用js直接来更换div的北京图片, ...
- win10更换登陆背景和关闭锁屏
更换登陆背景图 用国外一个hacker写的工具,可在github上下载,或者下载我上传到百度网盘的备份.win10默认的登陆背景太难看了. 去掉锁屏图片 登陆界面其实本身就是一种锁屏,为什么还要单独搞 ...
随机推荐
- 前端每日实战:17# 视频演示如何用纯 CSS 创作炫酷的同心矩形旋转动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/bMvbRp 可交互视频教程 此视频 ...
- psql的时间类型,通过时间查询
psql的时间类型,通过时间查询 psql有date/timestamp类型,date只显示年月日1999-01-08,而timestamp显示年月日时分秒 1999-01-08 09:54:03.2 ...
- 量子计算机编程(二)——QPU基础函数
第二部分主要是QPU的基础功能,第一部分就像是我们有了哪些基本的语句,第二部分就是我们能写一些简单基础的函数,一些小模块,第三部分就是他的应用了. 先来看一下一个简单量子应用的结构: 第一步,将量子态 ...
- 智慧港口——基于二三维一体化GIS的港口可视化监管平台
“智慧港口”是以现代化基础设施设备为基础,以云计算.大数据.物联网.移动互联网.智能控制等新一代信息技术与港口运输业务深度融合为核心,以港口运输组织服务创新为动力,以完善的体制机制.法律法规.标准规范 ...
- 2019年高校微信小程序开发大赛学习笔记
学做小程序(学堂在线笔记)一.传统布局 text-align:center //水平居中 margin-bottom: 60px //设置间距 二.弹性盒子布局 display:flex; flex- ...
- 深入理解React key
一 react 组件元素的 diff 算法 二 key 的理解 概述 react 中的key 属性,它是一个特殊的属性,它的出现不是给开发者用的(例如你为一个组件设置key之后不能获取组件的这个key ...
- Redis05——Redis Cluster 如何实现分布式集群
前面一片文章,我们已经说了Redis的主从集群及其哨兵模式.本文将继续介绍Redis的分布式集群. 在高并发场景下,单个Redis实例往往不能满足业务需求.单个Redis数据量过大会导致RDB文件过大 ...
- C#窗体排列方式
2020-03-11 每日一例第3天 1.设置父窗体属性:IsMdicontainer设置成true; 2.拖入menustrip控件,修改标题栏中的text文字. 3.点击“加载子窗体”设置代码: ...
- mimtproxy的使用(windows)
1.安装 pip3 install mitmproxy 或者下载安装指定版本:https://mitmproxy.org/downloads/ 2.配置证书 对于mitmproxy来说,如果想要截获H ...
- Java多线程详解(转载)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用 ...