zoukankan      html  css  js  c++  java
  • C#电脑背景图片Bing

        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()); }
            }
    
    
            /// <summary>
            /// 设置桌面背景图片
            /// </summary>
            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);
                });
            }
    
            /// <summary>
            /// 获取图片Url
            /// </summary>
            /// <returns></returns>
            private string GetImageUrl()
            {
                string InfoUrl = $"http://cn.bing.com/HPImageArchive.aspx?idx={idx}&n=1";
                string xmlString = HttpGet(InfoUrl);
                // 定义正则表达式用来匹配标签
                Regex regImg = new Regex("<Url>(?<imgUrl>.*?)</Url>", RegexOptions.IgnoreCase);
                // 搜索匹配的字符串
                MatchCollection matches = regImg.Matches(xmlString);
                // 取得匹配项列表
                string imageUrl = BingUrl + matches[0].Groups["imgUrl"].Value;
                return imageUrl;
            }
    
            /// <summary>
            /// Get请求
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            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;
            }
    
            /// <summary>  
            /// 图片请求  
            /// </summary>  
            /// <param name="url">要访问的图片所在网址</param>  
            /// <returns></returns>  
            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;
            }
        }
    
  • 相关阅读:
    hdu 1856 More is better
    hdu 1014 Uniform Generator
    hdu 1412 {A} + {B}
    hdu 1022 Train Problem I
    hdu 1027 Ignatius and the Princess II
    hdu 2377 Bus Pass
    POJ 1141 Brackets Sequence
    guava学习,集合专题
    org.apache.commons等常用工具学习
    utf-8mb4和排序规则
  • 原文地址:https://www.cnblogs.com/XuPengLB/p/11164076.html
Copyright © 2011-2022 走看看