使用Windows聚焦作为桌面壁纸

learningman 7月 25, 2018

Windows聚焦选的图片还是很不错的,和bing每日壁纸相比不分高下,然而用的人很少,主要原因是不像bing壁纸一样易于使用(后者甚至有官方api可以调用)。
提供两种方法把电脑上已有的Windows聚焦壁纸提取出来,然后可以把桌面壁纸设成壁纸文件所在的文件夹。

如果你没有打开锁屏中使用Windows聚焦的选项,本文的脚本将不会生效。

1.bat脚本

新建mvlockscreenpic.bat

@echo offCALL :CreatVBSROBOCOPY %LocalAppdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets %USERPROFILE%\Pictures\WindowsLockscreenPhoto\Temp *.* /min:153600cd /d %USERPROFILE%\Pictures\WindowsLockscreenPhoto\Tempren * *.jpgfor %%a in (*.jpg) do ( for /f "tokens=1 delims=x" %%i in ('cscript /nologo "%tmp%\GetImgInfo.vbs" "%%~a"') do ( if "%%~i"=="1920" ( if not exist "..\%%~a" move "%%~a" ..\ ) ))cd /d .. & rd /s /q Tempdel /f /q "%tmp%\GetImgInfo.vbs"echo Finish!timeout /t 3 /nobreak >nulexit:CreatVBS(echo Dim Imgecho Set Img = CreateObject^("WIA.ImageFile"^)echo Img.LoadFile WScript.Arguments^(0^)echo Wscript.Echo Img.Width ^& "x" ^& Img.Height ^& "x" ^& Img.HorizontalResolution)>"%tmp%\GetImgInfo.vbs"goto :eof

如果不想每次开机都看到一个黑色的控制台一闪而过的话,可以使用下面的vb脚本来启动bat
新建start.vbs

Set shell = Wscript.createobject("wscript.shell")a = shell.run ("mvlockscreenpic.bat",0)

这个脚本会将壁纸存放在用户目录下的\Pictures\WindowsLockscreenPhoto,即资源管理器中图片中的WindowsLockscreenPhoto文件夹。

2.Powershell脚本

新建wallpaper.ps1

# 将复制出来的缓存图片保存在下面的文件夹add-type -AssemblyName System.DrawingNew-Item "$($env:USERPROFILE)\Pictures\Spotlight" -ItemType directory -Force;New-Item "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets" -ItemType directory -Force;New-Item "$($env:USERPROFILE)\Pictures\Spotlight\Horizontal" -ItemType directory -Force;New-Item "$($env:USERPROFILE)\Pictures\Spotlight\Vertical" -ItemType directory -Force;# 将横竖图片分别复制到对应的两个文件夹foreach($file in (Get-Item "$($env:LOCALAPPDATA)\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets\*")){ if ((Get-Item $file).length -lt 100kb) { continue } Copy-Item $file.FullName "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\$($file.Name).jpg";}foreach($newfile in (Get-Item "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*")){ $image = New-Object -comObject WIA.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; }}# 壁纸设置函数function Set-Wallpaper{ param( [Parameter(Mandatory=$true)] $Path, [ValidateSet('Center', 'Stretch')] $Style = 'Center' ) Add-Type @"using System;using System.Runtime.InteropServices;using Microsoft.Win32;namespace Wallpaper{public enum Style : int{Center, Stretch}public class Setter {public const int SetDesktopWallpaper = 20;public const int UpdateIniFile = 0x01;public const int SendWinIniChange = 0x02;[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);public static void SetWallpaper ( string path, Wallpaper.Style style ) {SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);switch( style ){case Style.Stretch :key.SetValue(@"WallpaperStyle", "2") ;key.SetValue(@"TileWallpaper", "0") ;break;case Style.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 -Property LastWriteTime -Descending | Select-Object -First 1Set-Wallpaper -Path $file.FullName # echo $file.FullNameRemove-Item "$($env:USERPROFILE)\Pictures\Spotlight\CopyAssets\*";#pause

这个脚本会将壁纸存放在用户目录下的\Pictures\Spotlight,即资源管理器中图片中的Spotlight文件夹,并会自动将最新的图片设为壁纸。

来源

部分内容来自https://blog.csdn.net/anymake_ren/article/details/51125609

本文采用 CC BY-NC-SA 3.0 协议进行许可,在您遵循此协议的情况下,可以自由共享与演绎本文章。
本文链接:https://learningman.top/archives/680.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注




you're currently offline