SendKeys实现Shift+Win+V组合键的正确语法是什么?
解决用C#/VB.NET关闭Toast通知的SendKeys语法问题
问题根源
你之前的写法错误在于混淆了SendKeys的按键符号:
^在SendKeys语法中代表的是Ctrl键,而非Windows键,所以+(^{v})实际发送的是Shift+Ctrl+V,根本没触发Win键,这就是代码无效的原因。- 你尝试的
+(^{ESC}v)会被解析为Shift+Ctrl+Esc(这本身就是打开任务管理器的系统快捷键),所以才会意外打开任务管理器。
正确的实现代码
SendKeys中Windows键的正确符号是{WIN}(也可以用{LWIND}表示左Win键,{RWIND}表示右Win键),要发送Shift+Win+V并随后发送Delete键,正确的代码如下:
C#版本
// 发送Shift+Win+V,聚焦到通知 SendKeys.SendWait("+({WIN}v)"); // 等待通知聚焦(可选,根据系统响应速度调整延迟时长) System.Threading.Thread.Sleep(200); // 发送Delete键关闭通知 SendKeys.SendWait("{DELETE}");
VB.NET版本
' 发送Shift+Win+V,聚焦到通知 SendKeys.SendWait("+({WIN}v)") ' 等待通知聚焦(可选,根据系统响应速度调整延迟时长) System.Threading.Thread.Sleep(200) ' 发送Delete键关闭通知 SendKeys.SendWait("{DELETE}")
额外注意事项
- 如果系统响应较慢,建议在两次按键发送之间添加短暂延迟,确保通知有足够时间获得焦点。
- SendKeys默认向当前活动窗口发送按键,而
Shift+Win+V是全局快捷键,通常能正常触发通知中心聚焦,但如果你的程序处于后台,可能需要额外处理确保按键能全局生效。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

