zoukankan      html  css  js  c++  java
  • 一键搜索之Win10锁屏壁纸

      前天无意发现win10的锁屏壁纸挺漂亮的,就想着能不能保存下来?网上一搜果然有资料,当时参考的连接如下

      http://jingyan.baidu.com/article/fedf07375ea25135ad897761.html

      步骤挺简单的,目录为C:UsersXXXAppDataLocalPackagesMicrosoft.Windows.ContentDeliveryManager_XXXLocalStateAssets。但我们最终看到是一堆乱码式的文件,加个.jpg即可访问。感觉挺麻烦的,而且不是所有的文件都是全屏壁纸!

      

      能不能写个搜索的小程序,直接点一下就自动导出壁纸呢!当然是可以的啦(不然也没这篇文章了 ⊙▂⊙)~  具体解题思路如下

      1、获取当前显示器屏幕尺寸,为后面判断是否为全屏壁纸文件做准备

    1             //获取显示器屏幕尺寸,用来判断全屏大小的壁纸
    2             double height = SystemParameters.PrimaryScreenHeight;
    3             double width = SystemParameters.PrimaryScreenWidth;
    获取屏幕尺寸

      2、获取最终壁纸所在的文件夹(这里写的不太满意 囧rz)

    //最终的壁纸目录
                string targetPath;
    
                //获取当前用户文件夹
                string userPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
    
                if (Directory.Exists(userPath + @"AppDataLocalPackages"))
                {
                    foreach (var itemF in Directory.GetDirectories(userPath + @"AppDataLocalPackages"))
                    {
                        //由于这级目录后缀会更换,所以用固定前缀来寻找目录
                        if (itemF.IndexOf("Microsoft.Windows.ContentDeliveryManager") > 0)
                        {
                            targetPath = itemF + @"LocalStateAssets";
                        }
                    }
                }
    获取壁纸目录

      3、判断是否为全屏壁纸。是则导出,不是则狗带~ (这里判断是否为有效的图片文件,比较粗暴。如果其他好的方法,欢迎指出 ♪(´▽`))

     1  foreach (var itemW in Directory.GetFiles(targetPath))
     2                         {
     3                             try
     4                             {
     5                                 BitmapImage image = new BitmapImage(new Uri(itemW));
     6 
     7                                 //这里不用用Height和Width属性判断,因为不能保证每张图片都是96dpi
     8                                 if (image.PixelHeight == height && image.PixelWidth == width)
     9                                 {
    10                                     File.Copy(itemW, filePath + string.Format(@"{0}.jpg", ++i), true);
    11                                 }
    12                             }
    13                             catch (NotSupportedException ex)
    14                             {
    15                                 //如果不是图片文件,则继续处理
    16                                 continue;
    17                             }
    18                             catch (Exception ex)
    19                             {
    20 
    21                             }
    22                         }
    判断并导入壁纸

      最终的程序如下,一共找了5张壁纸

      所有的结果保存在同级目录Assets下面(由程序创建的)。 当然,这几张是我测试用的,不是微软推送的,别想多! 传送门

     

  • 相关阅读:
    iscroll 子表左右滚动同时保持页面整体上下滚动
    mac xampp命令行调用mysql
    学习—ReentrantLock
    sychronized和lock的区别
    学习——常见垃圾回收器
    学习——java内存模型
    学习——哈夫曼编码
    数据库—Innodb中的MVVC
    学习-事务-事务特性
    学习——事务-事务隔离级别
  • 原文地址:https://www.cnblogs.com/lan-mei/p/5239712.html
Copyright © 2011-2022 走看看