通过 NVIDIA 独显状态控制 Wallpaper Engine 开机启动

目录

背景

家里使用外接显卡(eGPU)连接大屏幕时,希望 Wallpaper Engine 自动启动显示动态壁纸。

但外出使用笔记本时,没有外接显卡,不希望壁纸程序开机启动,避免浪费资源。

因此通过 Windows 计划任务,在登录时检测 NVIDIA GPU 状态,只有 nvidia-smi 检测成功时才启动 Wallpaper Engine。


1. 关闭 Wallpaper Engine 自启动

先关闭 Wallpaper Engine 自带的开机启动:

1
2
3
4
Wallpaper Engine
→ 设置
→ 常规
→ Windows 启动时运行

取消勾选。

避免它绕过检测直接启动。


2. 创建检测脚本

创建目录:

1
mkdir C:\Scripts

创建:

1
C:\Scripts\start-wallpaper.vbs

内容:

1
2
3
4
5
6
7
8
9
Set WshShell = CreateObject("WScript.Shell")

ret = WshShell.Run("nvidia-smi", 0, True)

If ret = 0 Then

    WshShell.Run """C:\Program Files (x86)\Steam\steamapps\common\wallpaper_engine\wallpaper64.exe""", 0, False

End If

逻辑:

  • nvidia-smi 返回码为 0
    • NVIDIA 显卡可用
    • 启动 Wallpaper Engine
  • 返回非 0
    • 没有可用 NVIDIA GPU
    • 不启动

3. 测试脚本

手动运行:

1
wscript "C:\Scripts\start-wallpaper.vbs"
  • 连接 eGPU 时:应该启动 Wallpaper Engine。

  • 未连接 eGPU 时:应该无任何动作。


4. 创建 Windows 计划任务

打开:

1
2
Win + R
taskschd.msc

选择「创建任务」

不要选择「创建基本任务」。


常规

名称:

1
Start Wallpaper When NVIDIA Available

勾选:

1
使用最高权限运行

因为 nvidia-smi 需要管理员权限。


触发器

新建:

1
登录时

高级设置

1
延迟任务:30 秒

操作

程序:

1
wscript

参数:

1
"C:\Scripts\start-wallpaper.vbs"

最终效果

家里

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
连接 eGPU
    ↓
Windows 登录
    ↓
计划任务等待 30 秒
    ↓
执行 nvidia-smi
    ↓
检测成功
    ↓
启动 Wallpaper Engine

外出

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
无 eGPU
    ↓
Windows 登录
    ↓
计划任务等待 30 秒
    ↓
执行 nvidia-smi
    ↓
检测失败
    ↓
不启动 Wallpaper Engine

这样可以让壁纸程序根据实际硬件环境自动启停。

发现新版本

当前站点有新版本可用。