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
相关产品推荐
相关产品推荐

