windows 快捷键更改壁纸

windows 快捷键更改壁纸

简介:通过 powershell,实现 windows 快捷键修改壁纸

起因:在 Windows 系统中,使用内置的幻灯片放映功能自动切换桌面壁纸时,无法直接通过快捷键或按钮手动切换到下一张壁纸。(一番搜索无果,有大佬知道的话烦请告知,感谢感谢)

网络搜索有说右键有“下一个桌面背景”,但是很遗憾我桌面右键没有

询问 Deepseek 给了一些第三方工具,但是环境原因公司电脑无法安装。决定自己动手

BioniX Wallpaper
​
支持快捷键切换壁纸(如 Ctrl + 方向键)。
​
官网:https://www.bionixwallpaper.com/
​
DisplayFusion
​
功能强大的桌面管理工具,支持壁纸轮播和自定义快捷键。
​
官网:https://www.displayfusion.com/
​
Wallpaper Engine(Steam平台)
​
支持动态壁纸和手动切换,需付费购买但功能丰富。
​
Steam商店页:Wallpaper Engine

本来是打算 ai 写完自己改改,能用就行的,但是 ai 写出来全是报错...

为避免重复造轮子我上 github 上找了一个

点击跳转原项目

本篇实现不同之处:

  1. 修改图片设置逻辑,由图片移动到新文件夹,更改为在指定目录循环切换。

  2. 省略了 windows 定时任务部分(我只想要快捷键切换功能,对定时切换有需求的可以点进去照着设置一下)

  3. 增加快捷键部分

操作步骤

1 新建 "Set-RandomWallpaper.ps1"记事本打开复制以下内容

注意修改自身存放图片的目录($bg_dir)允许的图片后缀($extList)

以及想要的填充方式(修改这行代码“Set-WallPaper -Image $imagePath -Style Fill“,具体见注释)


# 背景图片所在目录。建议英文,中文的话可能因为编码原因乱码,报目录不存在
$bg_dir= "E:\wallpaper"

Function Set-WallPaper {
 
<#
 
    .SYNOPSIS
    Applies a specified wallpaper to the current user's desktop
    
    .PARAMETER Image
    Provide the exact path to the image
 
    .PARAMETER Style
    Provide wallpaper style (Example: Fill, Fit, Stretch, Tile, Center, or Span)
  
    .EXAMPLE
    Set-WallPaper -Image "C:\Wallpaper\Default.jpg"
    Set-WallPaper -Image "C:\Wallpaper\Background.jpg" -Style Fit
  
#>
 
param (
    [parameter(Mandatory=$True)]
    # Provide path to image
    [string]$Image,
    # Provide wallpaper style that you would like applied
	#填充方式,对应背景设置界面的6种填充方式
	<#
	Fill:填充方式,拉伸图片以填满整个桌面,同时保持图片的宽高比例。
	Fit:适应方式,缩小图片以适应桌面大小,同时保持图片的宽高比例。
	Stretch:拉伸方式,拉伸图片以覆盖整个桌面,不考虑图片的宽高比例。
	Tile:平铺方式,重复图片以覆盖整个桌面。
	Center:居中方式,将图片放置在桌面中央,不进行任何拉伸或平铺。
	Span:跨屏方式,拉伸图片以覆盖多个显示器,同时保持图片的宽高比例。
	#>
    [parameter(Mandatory=$False)]
    [ValidateSet('Fill', 'Fit', 'Stretch', 'Tile', 'Center', 'Span')]
    [string]$Style
)
 
$WallpaperStyle = Switch ($Style) {
  
    "Fill" {"10"}
    "Fit" {"6"}
    "Stretch" {"2"}
    "Tile" {"0"}
    "Center" {"0"}
    "Span" {"22"}
  
}
 # 设置WallpaperStyle,TileWallpaper
If($Style -eq "Tile") {
 
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name WallpaperStyle -PropertyType String -Value $WallpaperStyle -Force
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name TileWallpaper -PropertyType String -Value 1 -Force
 
}
Else {
 
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name WallpaperStyle -PropertyType String -Value $WallpaperStyle -Force
    New-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name TileWallpaper -PropertyType String -Value 0 -Force
 
}
 
Add-Type -TypeDefinition @" 
using System; 
using System.Runtime.InteropServices;
  
public class Params
{ 
    [DllImport("User32.dll",CharSet=CharSet.Unicode)] 
    public static extern int SystemParametersInfo (Int32 uAction, 
                                                   Int32 uParam, 
                                                   String lpvParam, 
                                                   Int32 fuWinIni);
}
"@ 
  
    $SPI_SETDESKWALLPAPER = 0x0014
    $UpdateIniFile = 0x01
    $SendChangeEvent = 0x02
  
    $fWinIni = $UpdateIniFile -bor $SendChangeEvent
  
    $ret = [Params]::SystemParametersInfo($SPI_SETDESKWALLPAPER, 0, $Image, $fWinIni)
}
 

Function Set-RandomWallpapper{
  param (
      [string] $bg_dir
  )
  # 允许的文件后缀
  $extList= "*.jpg","*.jpeg","*.png"
  $image = Get-ChildItem -Path $bg_dir -Name -Include $extList |
    Get-Random -Count 1
  $imagePath = "$bg_dir\$image"
   #在这里更改想要的填充方式
  Set-WallPaper -Image $imagePath -Style Fill
 
}


Set-RandomWallpapper -bg_dir $bg_dir
此时就可以通过windows Powershell 修改壁纸了

搜索windows Powershell 管理员打开,进入文件所在目录执行以下命令

powershell -ExecutionPolicy Bypass -File .\Set-RandomWallpaper.ps1

2 设置快捷键

  1. 创建快捷方式:右键点击 Set-RandomWallpaper.ps1 文件,选择“创建快捷方式”。

  2. 设置快捷键:右键点击快捷方式,选择“属性”,在“快捷键”框中按下你想要设置的快捷键组合(如 Ctrl+Alt+Right)。

  3. 确保脚本可以运行:在“目标”框中,添加 powershell -ExecutionPolicy Bypass -File 前缀,确保 PowerShell 脚本可以正常运行。

运行方式选最小化,避免运行时弹出黑框

现在就可以通过 Ctrl+Alt+Right切换桌面壁纸了

存在的问题

会强行从幻灯片放映改为图片,也就是说不能周期自动切换了。只能手动切换,

可以用原项目中的 Windows 系统的【计划任务】解决该问题。但是本人不需要定时切换功能,所以没试过,不知道能不能用

参考资料

droidgithub/set-random-wallpapper: 运行本程序后会更换Windows桌面壁纸。配合Windows系统的【计划任务】,我每周一、周四自动更改Windows桌面壁纸(即为每个周期绑定一张图片),提示新的计划周期开始了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值