定时切换屏幕刷新率脚本

wen 实用脚本 2

本文目录导读:

定时切换屏幕刷新率脚本

  1. Windows 版本 (PowerShell 脚本)
  2. 使用说明
  3. 进阶版本 (支持多显示器)
  4. 自动化任务计划
  5. 注意事项

我来为您提供一个定时切换屏幕刷新率的脚本,这个脚本可以按照设定的时间自动切换显示器刷新率。

Windows 版本 (PowerShell 脚本)

# 定时切换屏幕刷新率脚本 - Windows
# 需要管理员权限运行
# 配置区域
$MonitorName = "Generic PnP Monitor"  # 显示器名称(可选,留空则使用主显示器)
$RefreshRate1 = 60   # 刷新率1 (Hz)
$RefreshRate2 = 144  # 刷新率2 (Hz)
$IntervalMinutes = 30 # 切换间隔(分钟)
# 获取显示器信息
function Get-MonitorInfo {
    $monitors = Get-WmiObject -Namespace "root\wmi" -Class "WmiMonitorListedSupportedSourceModes"
    return $monitors
}
# 设置刷新率
function Set-RefreshRate {
    param($RefreshRate)
    $monitor = Get-WmiObject -Namespace "root\wmi" -Class "WMIMonitorID" | Select-Object -First 1
    if (-not $monitor) {
        Write-Error "未找到显示器"
        return $false
    }
    # 使用QRes工具或DisplaySwitch设置分辨率(需要第三方工具QRes)
    # 或者使用下面的方法
    try {
        # 获取当前显示设置
        $display = Get-WmiObject -Namespace "root\cimv2" -Class "Win32_VideoController" | Select-Object -First 1
        # 这里需要一个外部工具来设置刷新率,Windows原生PowerShell功能有限
        Write-Host "尝试设置刷新率为 ${RefreshRate}Hz..." -ForegroundColor Yellow
        # 使用QRes工具(需要下载)
        $qresPath = "C:\Tools\QRes.exe"
        if (Test-Path $qresPath) {
            & $qresPath /r:$RefreshRate
            Write-Host "刷新率已切换至 ${RefreshRate}Hz" -ForegroundColor Green
            return $true
        }
        else {
            Write-Warning "QRes工具未找到,请下载并放置在 C:\Tools\QRes.exe"
            Write-Host "下载地址:http://www.timworx.com/qres/"
            return $false
        }
    }
    catch {
        Write-Error "设置刷新率失败: $_"
        return $false
    }
}
# 主循环
Write-Host "屏幕刷新率定时切换脚本已启动" -ForegroundColor Cyan
Write-Host "运行间隔: ${IntervalMinutes} 分钟" -ForegroundColor Cyan
Write-Host "刷新率切换范围: ${RefreshRate1}Hz ↔ ${RefreshRate2}Hz" -ForegroundColor Cyan
Write-Host "按 Ctrl+C 停止运行`n" -ForegroundColor Cyan
$currentRate = $RefreshRate1
while ($true) {
    $targetRate = if ($currentRate -eq $RefreshRate1) { $RefreshRate2 } else { $RefreshRate1 }
    $time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    Write-Host "[${time}] 正在切换至 ${targetRate}Hz..." -ForegroundColor Magenta
    if (Set-RefreshRate -RefreshRate $targetRate) {
        $currentRate = $targetRate
    }
    Write-Host "等待 ${IntervalMinutes} 分钟后再次切换..." -ForegroundColor Gray
    Start-Sleep -Seconds ($IntervalMinutes * 60)
}

使用说明

Windows 版本:

  1. 下载 QRes 工具

    • 访问 http://www.timworx.com/qres/
    • 下载 QRes.exe
    • 放置在 C:\Tools\ 目录
  2. 运行脚本

    # 以管理员身份运行 PowerShell
    .\RefreshRateSwitcher.ps1

修改配置:

脚本顶部有配置区域,您可以根据需要修改:

  • $RefreshRate1$RefreshRate2:切换的刷新率
  • $IntervalMinutes:切换间隔(分钟)

进阶版本 (支持多显示器)

# 多显示器支持版本
param(
    [int]$RefreshRate1 = 60,
    [int]$RefreshRate2 = 144,
    [int]$Interval = 30,
    [switch]$UseMultiMonitors
)
# 使用 NirCmd 工具(推荐替代QRes)
$nircmdPath = "C:\Tools\nircmd.exe"
function Set-MultiMonitorRefreshRate {
    param($Rate)
    if (Test-Path $nircmdPath) {
        # 设置所有显示器刷新率
        & $nircmdPath setdisplay monitor:all refresh $Rate
        Write-Host "所有显示器刷新率已设置为 ${Rate}Hz" -ForegroundColor Green
    }
    else {
        Write-Error "NirCmd 未找到,请下载: https://www.nirsoft.net/utils/nircmd.html"
    }
}
# 主程序
Write-Host "多显示器刷新率切换器" -ForegroundColor Cyan
Write-Host "配置: $RefreshRate1 Hz / $RefreshRate2 Hz"
Write-Host "间隔: $Interval 分钟"
$current = $RefreshRate1
while ($true) {
    $next = if ($current -eq $RefreshRate1) { $RefreshRate2 } else { $RefreshRate1 }
    Set-MultiMonitorRefreshRate -Rate $next
    $current = $next
    Start-Sleep -Seconds ($Interval * 60)
}

自动化任务计划

如果不想手动运行脚本,可以创建 Windows 任务计划程序:

  1. 打开任务计划程序
  2. 创建基本任务
  3. 设置触发器为"每天"或特定时间
  4. 操作选择"启动程序",选择 PowerShell 并添加脚本路径

这样脚本会在指定时间自动运行。

注意事项

  1. 管理员权限:修改刷新率需要管理员权限
  2. 兼容性:部分显示器可能不支持某些刷新率
  3. 测试建议:建议先手动测试目标刷新率是否可用
  4. 工具依赖:需要使用第三方工具(QRes 或 NirCmd)

请根据您的实际需求调整脚本参数,如果您需要其他功能的变体,请告诉我!

抱歉,评论功能暂时关闭!