欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

用c#每日更换“必应背景图片”为“桌面壁纸”

程序员文章站 2022-06-05 17:03:33
必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片。 下面用c 抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换 实现思路 1.通过获取“必应”网页背景图片URL 2.下载图片到本地 3.设置这个图片为壁纸 4.每日自动切换壁纸 1.创建项目文 ......

用c#每日更换“必应背景图片”为“桌面壁纸” 必应每天都会更换背景图片,都非常漂亮,有的时候还十分惊艳,同时还会根据每个地区的特色不同应用不同的图片。 下面用c#抓取必应每天的背景图片,并实现桌面壁纸的每天自动切换

实现思路

  • 1.通过获取“必应”网页背景图片url
  • 2.下载图片到本地
  • 3.设置这个图片为壁纸
  • 4.每日自动切换壁纸

1.创建项目文件

使用windows 窗体应用程序可以不用像控制台应用程序一样弹出黑框

  • 1.先创建 windows 窗体应用
  • 2.删除窗体文件【这样不会有任何东西弹出】 用c#每日更换“必应背景图片”为“桌面壁纸”
  • 3.将program.cs的main方法中之前的代码删除 用c#每日更换“必应背景图片”为“桌面壁纸”
  • 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 用c#每日更换“必应背景图片”为“桌面壁纸”下载网页文件并提取图片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);

运行效果 用c#每日更换“必应背景图片”为“桌面壁纸”

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点启动 更换成“必应”背景图片为壁纸的程序 用c#每日更换“必应背景图片”为“桌面壁纸”用c#每日更换“必应背景图片”为“桌面壁纸”用c#每日更换“必应背景图片”为“桌面壁纸”用c#每日更换“必应背景图片”为“桌面壁纸”用c#每日更换“必应背景图片”为“桌面壁纸”用c#每日更换“必应背景图片”为“桌面壁纸”用c#每日更换“必应背景图片”为“桌面壁纸”

6.获取源码 链接

下载源码: https://github.com/liu-zhen-liang/automaticallychangebingwallpaper.