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
答案 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
,不是0x79
或0x60
,不是0x61
...
但是,这是一个解决方法:0x00
(谁知道它的工作原理?来自我之前使用键盘楔形条码扫描器的经验!)
附录:使用我首选的Keyboard Scan Code Specification;
进行测试这是我的工作代码:
WshShell.SendKeys "{NUMLOCK}^{ě}{NUMLOCK}"