如何使用PowerShell脚本模拟按下键盘ESC按键?
PowerShell模拟按下ESC键的实现方案
以下两种方案都可以实现和手动按ESC键完全一致的效果,可根据使用场景选择:
方案1:使用.NET内置SendKeys类(推荐普通场景使用)
调用System.Windows.Forms内置的按键模拟能力,代码简洁易维护:
# 加载依赖程序集 Add-Type -AssemblyName System.Windows.Forms # 发送ESC按键指令,SendWait会等待按键操作处理完成后再返回 [System.Windows.Forms.SendKeys]::SendWait("{ESC}")
注意:该方法默认将按键发送到当前系统活跃窗口,如需指定目标窗口,可先激活对应窗口后再执行上述代码。
方案2:调用Windows底层API(兼容全场景)
直接调用user32.dll的系统级按键接口,模拟效果和物理按键完全一致,无窗口焦点、运行环境限制:
# 定义ESC键对应虚拟键码、按键动作标识 $VK_ESC = 0x1B $KEYEVENTF_KEYDOWN = 0x0 $KEYEVENTF_KEYUP = 0x2 # 导入系统API Add-Type @" using System; using System.Runtime.InteropServices; public class User32 { [DllImport("user32.dll")] public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); } "@ # 执行完整的ESC按下+抬起动作 [User32]::keybd_event($VK_ESC, 0, $KEYEVENTF_KEYDOWN, [UIntPtr]::Zero) [User32]::keybd_event($VK_ESC, 0, $KEYEVENTF_KEYUP, [UIntPtr]::Zero)
两种方案的适用场景对比:
- 方案1:适合常规桌面交互场景,代码量小,调试方便
- 方案2:适合无UI、服务端、权限受限等特殊场景,兼容性更强
内容的提问来源于stack exchange,提问作者jim7475
相关产品推荐
相关产品推荐

