Example #1
0
        static async Task Loop()
        {
            var    lastDay = -1;
            string lasturl = "";

            while (true)
            {
                try
                {
                    //检查日期并更换桌面壁纸
                    var currentDay = DateTime.Now.Day;
                    if (lastDay != currentDay)
                    {
                        //新的一天来临了!昨晚被杀的是(划掉
                        //获取最新的必应美图,此高清Uri由晨旭提供~
                        var response = await client.GetAsync("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&pid=hp&uhd=1&uhdwidth=3840&uhdheight=2160");

                        if (!response.IsSuccessStatusCode)
                        {
                            continue;
                        }
                        var json = await response.Content.ReadAsStringAsync();

                        var responseObj = BingResponse.FromJson(json);
                        var url         = "https://cn.bing.com" + responseObj.Images[0].Url;
                        if (url == lasturl)
                        {
                            //这和上次的一样嘛!等待interval后重新获取
                            lastDay = -1;
                        }
                        else
                        {
                            response = await client.GetAsync(url);

                            string tmp = Path.Combine(Path.GetTempPath(), "temp.jpg");
                            using (System.Drawing.Image image = System.Drawing.Image.FromStream(await response.Content.ReadAsStreamAsync()))
                            {
                                //删除可能存在的旧的临时文件
                                if (File.Exists(tmp))
                                {
                                    try
                                    {
                                        File.Delete(tmp);
                                    }
                                    catch { }
                                }
                                //保存图片
                                image.Save(tmp);
                            }
                            //设置壁纸
                            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
                            string      WallpaperStyle = "", TileWallpaper = "";
                            switch (style)
                            {
                            case Program.WallpaperStyle.Center:
                                WallpaperStyle = "1";
                                TileWallpaper  = "0";
                                break;

                            case Program.WallpaperStyle.Stretch:
                                WallpaperStyle = "2";
                                TileWallpaper  = "0";
                                break;

                            case Program.WallpaperStyle.StretchToFill:
                                WallpaperStyle = "10";
                                TileWallpaper  = "0";
                                break;

                            case Program.WallpaperStyle.Tile:
                                WallpaperStyle = "1";
                                TileWallpaper  = "1";
                                break;
                            }
                            key.SetValue("WallpaperStyle", WallpaperStyle);
                            key.SetValue("TileWallpaper", TileWallpaper);
                            SystemParametersInfo
                            (
                                SPI_SETDESKWALLPAPER,
                                0,
                                tmp,
                                SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE
                            );
                            lastDay = currentDay;
                            lasturl = url;
                            if (showCopyright)
                            {
                                //绘制版权信息
                                var copyright = responseObj.Images[0].Copyright.Replace("(", "").Replace(")", "").Replace(" ©", "\n©");
                                DesktopTextHelper.ClearText();
                                DesktopTextHelper.DrawText("Microsoft YaHei UI", 14, FontStyle.Regular, Color.FromArgb(255, 255, 255, 255), copyright);
                            }
                        }
                    }
                }
                catch { }
                await Task.Delay(TimeSpan.FromMinutes(interval));
            }
        }