博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#电脑背景图片Bing
阅读量:4313 次
发布时间:2019-06-06

本文共 3517 字,大约阅读时间需要 11 分钟。

public class DesktopService    {        [DllImport("user32.dll", EntryPoint = "SystemParametersInfoA")]        static extern Int32 SystemParametersInfo(Int32 uAction, Int32 uParam, string lpvparam, Int32 fuwinIni);        private const string BingUrl = "http://www.bing.com";        private const string BingBasePath = @"E:\BingWallpaper";        private int _idx = -1;        private int idx        {            get => _idx;            set            {                if (value >= 0 && value < 8)                    _idx = value;            }        }        private static DesktopService _instance = null;        public static DesktopService Instance        {            get { return _instance ?? (_instance = new DesktopService()); }        }        ///         /// 设置桌面背景图片        ///         public Task SetDesktopBackground(bool isNext = true)        {            return Task.Factory.StartNew(() =>            {                if (!Directory.Exists(BingBasePath))                {                    Directory.CreateDirectory(BingBasePath);                }                if (isNext)                    idx++;                else                    idx--;                string bingPath = $@"{BingBasePath}\{DateTime.Now.AddDays(-idx).ToString("yyyy-MM-dd")}.bmp";                if (!File.Exists(bingPath))                {                    var imageUrl = GetImageUrl();                    var image = GetImage(imageUrl);                    image.Save(bingPath, System.Drawing.Imaging.ImageFormat.Bmp);                }                SystemParametersInfo(20, 0, bingPath, 1);            });        }        ///         /// 获取图片Url        ///         /// 
private string GetImageUrl() { string InfoUrl = $"http://cn.bing.com/HPImageArchive.aspx?idx={idx}&n=1"; string xmlString = HttpGet(InfoUrl); // 定义正则表达式用来匹配标签 Regex regImg = new Regex("
(?
.*?)
", RegexOptions.IgnoreCase); // 搜索匹配的字符串 MatchCollection matches = regImg.Matches(xmlString); // 取得匹配项列表 string imageUrl = BingUrl + matches[0].Groups["imgUrl"].Value; return imageUrl; } /// /// Get请求 /// /// ///
private string HttpGet(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; string html; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { Stream myResponseStream = response.GetResponseStream(); using (StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8)) { html = myStreamReader.ReadToEnd(); } } return html; } /// /// 图片请求 /// /// 要访问的图片所在网址 ///
private Image GetImage(string url) { Image img; try { WebRequest request = WebRequest.Create(url); using (WebResponse response = request.GetResponse()) { img = Image.FromStream(response.GetResponseStream()); } } catch { img = null; } return img; } }

转载于:https://www.cnblogs.com/XuPengLB/p/11164076.html

你可能感兴趣的文章
btn按钮之间事件相互调用
查看>>
Entity Framework 4.3.1 级联删除
查看>>
codevs 1163:访问艺术馆
查看>>
冲刺Noip2017模拟赛3 解题报告——五十岚芒果酱
查看>>
并查集
查看>>
sessionStorage
查看>>
代码示例_进程
查看>>
Java中关键词之this,super的使用
查看>>
人工智能暑期课程实践项目——智能家居控制(一)
查看>>
前端数据可视化插件(二)图谱
查看>>
kafka web端管理工具 kafka-manager【转发】
查看>>
获取控制台窗口句柄GetConsoleWindow
查看>>
Linux下Qt+CUDA调试并运行
查看>>
51nod 1197 字符串的数量 V2(矩阵快速幂+数论?)
查看>>
OKMX6Q在ltib生成的rootfs基础上制作带QT库的根文件系统
查看>>
zabbix
查看>>
多线程基础
查看>>
完美解决 error C2220: warning treated as error - no ‘object’ file generated
查看>>
使用SQL*PLUS,构建完美excel或html输出
查看>>
SQL Server数据库笔记
查看>>