提取windows聚焦图片作为桌面壁纸的方法
1、打开一个文本文件,复制以下代码,保存后缀为.ps1,命名为SetWallPaperFromSpotlight.ps1,收墩芬蓥然后右键“使用powershell运行”就可以发现桌面壁纸已经被设置为了最新的图片。所有的聚焦图片都被复制到你自己的用户文件夹下的Spotlight文件夹。比如我的是在:“C:\Users\Anymake\Pictures\Spotlight”。这样你就有了一个手动提取并设置最新图片为桌面壁纸的方法。下面第二步介绍每天电脑自动设置的方法。
2、#将复制出来的缓存图片保存在下面的文件夹add-type-Assembl鲻戟缒男yNameSystem.DrawingNew-Item"$($en即枢潋雳v:USERPROFILE)\Pictures\Spotlight"-ItemTypedirectory-Force;New-Item"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets"-ItemTypedirectory-Force;New-Item"$($env:USERPROFILE)\Pictures\Spotlight\Horizontal"-ItemTypedirectory-Force;New-Item"$($env:USERPROFILE)\Pictures\Spotlight\Vertical"-ItemTypedirectory-Force;#将横竖图片分别复制到对应的两个文件夹foreach($filein(Get-Item"$($env:LOCALAPPDATA)\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\*")){if((Get-Item$file).length-lt100kb){continue}Copy-Item$file.FullName"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\$($file.Name).jpg";}foreach($newfilein(Get-Item"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*")){$image=New-Object-comObjectWIA.ImageFile;$image.LoadFile($newfile.FullName);if($image.Width.ToString()-eq"1920"){Move-Item$newfile.FullName"$($env:USERPROFILE)\Pictures\Spotlight\Horizontal"-Force;}elseif($image.Width.ToString()-eq"1080"){Move-Item$newfile.FullName"$($env:USERPROFILE)\Pictures\Spotlight\Vertical"-Force;}}#壁纸设置函数functionSet-Wallpaper{param([Parameter(Mandatory=$true)]$Path,[ValidateSet('Center','Stretch')]$Style='Center')Add-Type@"usingSystem;usingSystem.Runtime.InteropServices;usingMicrosoft.Win32;namespaceWallpaper{publicenumStyle:int{Center,Stretch}publicclassSetter{publicconstintSetDesktopWallpaper=20;publicconstintUpdateIniFile=0x01;publicconstintSendWinIniChange=0x02;[DllImport("user32.dll",SetLastError=true,CharSet=CharSet.Auto)]privatestaticexternintSystemParametersInfo(intuAction,intuParam,stringlpvParam,intfuWinIni);publicstaticvoidSetWallpaper(stringpath,Wallpaper.Stylestyle){SystemParametersInfo(SetDesktopWallpaper,0,path,UpdateIniFile|SendWinIniChange);RegistryKeykey=Registry.CurrentUser.OpenSubKey("ControlPanel\\Desktop",true);switch(style){caseStyle.Stretch:key.SetValue(@"WallpaperStyle","2");key.SetValue(@"TileWallpaper","0");break;caseStyle.Center:key.SetValue(@"WallpaperStyle","1");key.SetValue(@"TileWallpaper","0");break;}key.Close();}}}"@[Wallpaper.Setter]::SetWallpaper($Path,$Style)}$filePath="$($env:USERPROFILE)\Pictures\Spotlight\Horizontal\*"$file=Get-Item-Path$filePath|Sort-Object-PropertyLastWriteTime-Descending|Select-Object-First1Set-Wallpaper-Path$file.FullName#echo$file.FullNameRemove-Item"$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*";#pause
3、必须以管理员身份登录才能执行这些步骤。如果不是以管理员身份登录,则您仅能更改适用于您的用户帐户的设置。由于windows默认的任务计划没有权限执行ps1脚本,因此首先需要用管理员运行Windows PowerShell
4、输入Set-ExecutionPolicy Unrestricted进行权限更改,输入Y确认
5、打开“任务计划程序”,方法是依次单击“控制面板”、“系统和安全性”、“管理工具”,然后双击“任务计划程序”。 需要管理员权限 如果系统提示您脶巴躔炒输入管理员密码或进行确认,请键入该密码或提供确认。单击“操作”菜单,然后单击“创建任务”。配置如下:常规:键入任务的名称比如SetWallPaperFromSpotlight和描述(可选) - 勾选“使用最高权限运行”
6、触发器:新建 - 选择“制定计划时” - 选择 执行时间如“7:30:00” - 选择执行周期如“每天 每隔1天发生一次” - 勾选"启用",也可以根据需要选择每小时,每半小时或者更高的频率运行脚本。
7、操作:新建 - 选择“启动程序” - "powershell" ,添加参数为文件路径,如"D:\code\py\SetWallPaperFromSpotlight.ps1",- 点击“确定”
8、所有完成就大功告成了,要检查效果的话,单机左侧的任务计划程序库,从右边找到你刚设置的SetWallPaperFromSpotlight任务,右键立即运行就可以看到效果了。