MENU

「合集」VBS 代码

2018 年 10 月 22 日 • 开发

代码 (Code)


激活窗口

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

模拟输入

Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "按键"
参考:博客园

1. 基本键

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

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

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

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

2. 特殊功能键

对于需要与 ShiftCtrlAlt 三个控制键组合的按键,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){UP}
↓ (DOWN ARROW){DOWN}
← (LEFT ARROW){LEFT}
→ (RIGHT ARROW){RIGHT}
BACKSPACE{BACKSPACE} / {BS} / {BKSP}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
DEL (Delete){Delete} / {DEL}
END{END}
ENTER{ENTER} / ~
ESC{ESC}
HELP{HELP}
HOME{HOME}
INS (Insert){Insert} / {INS}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC}
SCROLL LOCK{SCROLLLOCK}
Space (空格)
TAB{TAB}
F1{F1}
F2{F2}
F3{F3}
F4{F4}
F5{F5}
F6{F6}
F7{F7}
F8{F8}
F9{F9}
F10{F10}

循环

do
...
loop

语音合成 (TTS)

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

暂停

WScript.Sleep 毫秒

范例 (Samples)


模拟输入

键盘灯闪烁

  • 倒计时 (时间到后闪烁 NumLock 5 次,间隔 0.2s)
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)
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
do
WshShell.SendKeys "{NUMLOCK}"
WScript.Sleep 1000
loop
  • 循环闪烁 (NumLock,自定义间隔)
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
t = InputBox ("请输入闪烁间隔(毫秒)")
do
WshShell.SendKeys "{NUMLOCK}"
WScript.Sleep t
loop
  • 循环闪烁 (3 灯轮换,间隔 0.5s)
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

提示框

简易,有输入框

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

音乐播放器

简易,有输入框

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

语音合成

有输入框

Set s = CreateObject("SAPI.SpVoice")
i = InputBox ("请输入内容" & vbCrLf & "" ,"语音合成  [等待中]")
s.speak i
最后编辑于: 2020 年 07 月 10 日
返回文章列表 打赏
本页链接的二维码
打赏二维码