CTRL + 1无效

时间:2015-12-09 21:39:29

标签: vbscript ctrl

Option Explicit

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """C:\Program Files (x86)\Blackmagic Design\Blackmagic Media Express\MediaExpress.exe""" ,1,true

Wscript.Sleep 100
WshShell.SendKeys "^1"

Set WshShell = Nothing

1 个答案:

答案 0 :(得分:1)

.SendKeys方法使用 字母数字小键盘来传输数字。我的键盘(最上面的 Esc F1 ... 键行下面的数字行)表现如下(使用捷克语键盘输入):

° 1 2 3 4 5 6 7 8 9 0 Shift

; + 电子 取值 C - [R Ž Ý Á Í É CapsLock

; + 电子 š C ř ž ý á í é未经修改

我可以确认,例如WshShell.SendKeys "^1"Windows Script Host Version 5.8)将 Ctrl + Shift + 1 键击发送到活动窗口,就像键入键盘一样。

我的回答:我需要使用WshShell.SendKeys "^{+}"来模拟键盘 Ctrl + 1 输入。

调用 .SendKeys窗口(cmd)中,当前键盘布局(输入法)上的<{> 1}}行为独立cscript //nologo 34189495.vbs之前激活的窗口中。测试了所有组合 - Windows显示语言WshShell.SendKeys "^1",键盘输入法English (UK) / Czech
- 显示语言United Kingdom,键盘输入法Czech / Czech
彼此相对......

另一个问题:如何使用US-international方法模拟键盘输入 Ctrl + 2 ?我不能简单地使用.SendKeys。它不起作用,因为WshShell.SendKeys "^{ě}" latin小写字母E with caron )十六进制值大于ě(以及0x79)。根据{{​​3}} Microsoft文档,带前缀扫描代码部分(抱歉链接下载):

  

如果您使用ščřžýáíé集中的扫描码,请确保第二个字节   适合与单字节扫描码值相同的方式。其他   字词:不大于0xE0 ,不是0x790x60,不是0x61 ...

但是,这是一个解决方法:0x00(谁知道它的工作原理?来自我之前使用键盘楔形条码扫描器的经验!)

附录:使用我首选的Keyboard Scan Code Specification;

进行测试

这是我的工作代码:

WshShell.SendKeys "{NUMLOCK}^{ě}{NUMLOCK}"