Skip to content

「合集」VBS 代码

激活窗口

vbs
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate "窗口标题"

模拟输入

vbs
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "按键"

参考:博客园

1. 基本键

一般来说,要发送的按键都可以直接用该按键字符本身来表示:

发送字母 X​,用 WshShell.SendKeys "X"

也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可:

发送按键 Test​,用 WshShell.SendKeys "Test"

2. 特殊功能键

对于需要与 Shift​、Ctrl​、Alt 三个控制键组合的按键,SendKeys 使用特殊字符来表示:

按键代码
ShiftWshShell.SendKeys "+"
CtrlWshShell.SendKeys "^"
AltWshShell.SendKeys "%"

注意:这样使用时,不需要使用 大括号 括起这些特殊字符。

由于 +​、^​ 这些字符用来表示特殊的控制按键,所以如果要表示这些 字符​ 的按键,要用 大括号 括住这些字符:

发送加号 +​,用 WshShell.SendKeys "{+}"

对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称。
如果发送是基本字符用 “” 括起来:

发送 回车键​,用 WshShell.SendKeys "{ENTER}"
发送 向下的方向键​,用 WshShell.SendKeys "{DOWN}"

3. 组合键

发送 Ctrl + Shift + ESC​,用 WshShell.SendKeys "^+{ESC}"

4. 发送多个重复的单字母按键

不必重复输入该字母,SendKeys 允许使用简化格式进行描述。
使用格式:{按键 数字}

发送 10 个字母 X​,用 WshShell.SendKeys "{X 10}"

5. 列表

按键代码
↑(UP ARROW)
↓(DOWN ARROW)
←(LEFT ARROW)
→(RIGHT ARROW)
BACKSPACE{BACKSPACE} / {BS} /
BREAK
CAPS LOCK
DEL(Delete){Delete} /
END
ENTER{ENTER} / ~
ESC
HELP
HOME
INS(Insert){Insert} /
NUM LOCK
PAGE DOWN
PAGE UP
PRINT SCREEN
SCROLL LOCK
Space(空格)
TAB
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10

循环

vbs
do
...
loop

语音合成(TTS)

vbs
CreateObject("SAPI.SpVoice").Speak "内容"

暂停

vbs
WScript.Sleep 毫秒

示例代码

模拟输入

键盘灯闪烁

倒计时(时间到后闪烁 NumLock 5 次,间隔 0.2s)

vbs
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
m = InputBox("分")
s = InputBox("秒")
WScript.sleep m*6000+s*1000
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"
WScript.sleep 200
WshShell.SendKeys "{NUMLOCK}"

循环闪烁(NumLock,间隔 1s)

vbs
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
do
WshShell.SendKeys "{NUMLOCK}"
WScript.Sleep 1000
loop

循环闪烁(NumLock,自定义间隔)

vbs
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
t = InputBox("请输入闪烁间隔(毫秒)")
do
WshShell.SendKeys "{NUMLOCK}"
WScript.Sleep t
loop

循环闪烁(3 灯轮换,间隔 0.5s)

vbs
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{NUMLOCK}"
WScript.Sleep 500
WshShell.SendKeys "{NUMLOCK}"
WScript.Sleep 500
do
WshShell.SendKeys "{NUMLOCK}"
WshShell.SendKeys "{CAPSLOCK}"
WScript.Sleep 500
WshShell.SendKeys "{CAPSLOCK}"
WshShell.SendKeys "{SCROLLLOCK}"
WScript.Sleep 500
WshShell.SendKeys "{SCROLLLOCK}"
WshShell.SendKeys "{NUMLOCK}"
WScript.Sleep 500
loop

提示框

简易,有输入框

vbs
Dim i, msg
msg = "请输入内容:"
i = InputBox(msg)
Msgbox i

音乐播放器

简易,有输入框

vbs
Set Player = CreateObject("WMPlayer.OCX")
song = InputBox("请输入歌曲路径" & vbCrLf & "", "简易音乐播放器 [等待中]")
if song <>"" then
do
Player.url = song
song = InputBox(song & vbCrLf & "", "简易音乐播放器 [正在播放]", song)
if song = "" then exit do
loop
end if
Set Player = nothing

语音合成

有输入框

vbs
Set s = CreateObject("SAPI.SpVoice")
i = InputBox("请输入内容" & vbCrLf & "", "语音合成 [等待中]")
s.speak i