You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何实现检测到鼠标移动或任意按键即可解除脚本暂停?

PowerShell 实现鼠标移动/任意按键触发暂停解除方案

直接使用以下可运行代码即可实现需求:

Add-Type -AssemblyName System.Windows.Forms
# 记录初始鼠标X轴坐标
$originalPOS = [System.Windows.Forms.Cursor]::Position.X
Write-Host -NoNewline "暂停中,移动鼠标或按下任意键即可继续..."

while ($true) {
    # 非阻塞检测是否有按键按下
    if ($host.UI.RawUI.KeyAvailable) {
        $null = $host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')
        break
    }
    # 检测鼠标是否发生移动
    $newPOS = [System.Windows.Forms.Cursor]::Position.X
    if ($newPOS -ne $originalPOS) {
        break
    }
    # 无触发事件时休眠,降低CPU占用
    Start-Sleep -Seconds 1
}

Write-Host "`n暂停已解除,脚本继续执行"

实现说明

  • 核心调整点:将原有的阻塞式按键检测改为非阻塞逻辑,通过$host.UI.RawUI.KeyAvailable先判断是否有未处理的按键输入,仅当有输入时才执行读键操作,不会阻塞鼠标检测逻辑的运行
  • 循环内会依次轮询按键事件、鼠标坐标变化,只要满足任意一个触发条件就会直接跳出循环,解除脚本暂停
  • 休眠时长可根据实际灵敏度需求调整,数值越小检测响应越快,相应CPU占用也会略高

内容的提问来源于stack exchange,提问作者I am Jakoby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:06:02