VBS学习日记(七) 重复操作

Vbs 脚本编程简明教程之-—妙用 SendKeys 简化重复操作

巧妙使用 VBS 中的 SendKeys 命令(这个命令的作用就是模拟键盘操作,将一个或多个按键指令发送到指定 Windows 窗口来控制应用程序运行) ,可以极大的方便我们的常用操作。其使用格式为:
Object.SendKeys string
其中:
Object:为 WshShell 对象,即脚本的第一行为:

Set WshShell=WScript.CreateObject("WScript.Shell")
将 Object 替换为 WshShell
“string ”:表示要发送的按键指令字符串,需要放在英文双引号中。它包含如下内容:
1.基本键:一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母“x”,使用“ WshShell.SendKeys "x"”即可。当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“cfan”,可以使用
“WshShell.SendKeys "cfan"”。
2.特殊功能键:对于需要与 Shift、Ctrl 、Alt 三个控制键组合的按键,SendKeys 使用特殊字符来表示:Shift —— +;Ctrl —— ^;Alt —— %如要发送的组合按键是同时按下 Ctrl +E,需要用“WshShell.SendKeys "^e" ”表示,如果要发送的组合按键是按住 Ctrl 键的同时按下 E 与 C 两个键,这时应使用小括号把字母键括起来,书写格式为“WshShell.SendKeys "^(ec)"”,这里要注意它与“WshShell.SendKeys "^ec"” 的区别,后者表示组合按键是同时按住 Ctrl 和 E 键,然后松开 Ctrl 键,单独按下“C”字母键。
由于“+”、“^ ” 这些字符用来表示特殊的控制按键了,如何表示这些按键呢?只要用大括号括住这些字符即可。例如,要发送加号“+”,可使用“ WshShell.SendKeys "{+}" ”。另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称,例如要发送回车键,需要用“WshShell.SendKeys "{ENTER}"”表示,发送向下的方向键用“WshShell.SendKeys "{DOWN}" ”表示。如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKeys 允许使用简化格式进行描述,使用格式为 “{按键 数字} ”。例如要发送 10 个字母“x”,则输入“ WshShell.SendKeys "{x10}" ” 即可。

例一:锁定计算机,ctrl+esc的功能相当于按下了win

Set WshShell = WScript.CreateObject("wscript.shell")
WshShell.SendKeys("^{ESC}{RIGHT}{RIGHT}o")

例二:让 VBS 脚本自动在记事本中输入一行文字"Hello, welcome to cfan"

Set WshShell = WScript.CreateObject("Wscript.shell")
WshShell.Run("notepad")
WScript.Sleep 2000'脚本暂停2秒,给notepad一个打开的时间,有时时间太短可能导致后面的字符无法进入编辑区
WshShell.AppActivate "无标题-记事本"'AppActivate为寻找可执行程序的标题框并激活
WshShell.SendKeys("Hello,welcome to cfan")
例三:在记事本中输入"This is the most wonderful day of my life because I'm here with you now."并保存为Test.txt,注意 关闭记事本可以用alt+f4,保存可以用ctrl+s
Set WshShell = WScript.CreateObject("Wscript.Shell")
WshShell.Run("notepad")
WScript.Sleep(1000)
WshShell.AppActivate("无标题 - 记事本")
WshShell.SendKeys("This is the most wonderful day of my life because I'm here with you now.")
WScript.Sleep(2000)
WshShell.SendKeys("%{f4}sTest.txt{ENTER}")
例四:制作能自动定时存盘的记事本
'定义变量和对象,AutoSaveTime自动存盘时间间隔(单位毫秒),TXTFileName文件名称
Dim WshShell,AutoSaveTime,TXTFileName
'自动存盘时间间隔为3秒
AutoSaveTime = 3000
Set WshShell = WScript.CreateObject("Wscript.Shell")
TXTFileName = InputBox("请输入您要创建的文件名称(不能用中文和纯数字:","文件名")
'打开并激活记事本
WshShell.Run("notepad")
WScript.Sleep 500
WshShell.AppActivate("无标题-记事本")
'ctrl+s保存
WshShell.SendKeys("^s")
WScript.Sleep(500)
'自动填入文件名称
WshShell.SendKeys(TXTFileName)
WScript.Sleep 500
'alt+s保存
WshShell.SendKeys("%s")
WScript.Sleep AutoSaveTime
'WshShell.AppActivate(TXTFileName)激活,必须要用括号,不要的话,会报错
While WshShell.AppActivate(TXTFileName) = True
	WshShell.SendKeys("^s")
	WScript.Sleep AutoSaveTime
Wend
'退出脚本
WScript.Quit
定时存盘的关键,通过“ While……Wend”这个当条件为“ 真”时循环命令,实现自动存盘代码“ WshShell.SendKeys "^s"” 和定时代码“WScript.Sleep AutoSaveTime” 的重复执行。 因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件 “WshShell.AppActivate TXTFileName=True” ,当记事本运行中时,可以激活记事本窗口,这个条件运行结果为 “True”,定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会跳出循环,执行“Wend” 后面的“WScript.Quit ”退出脚本。

将其保存为记事本.vbs,以后要使用记事本时,都通过双击这个脚本文件来打开。

程序说明:这个脚本的基本思路是定时向记事本发送 Ctrl +S 这个存盘组合键

例五:打开任务管理器

Set WshShell = WScript.CreateObject("Wscript.Shell")
WshShell.SendKeys "^+{ESC}"
资料上说
WshShell.SendKeys "^{ESC}u"

能打开关机菜单立刻显身,但是我运行的结果只是相当于按了win键+u,没有出现关机菜单显身,之前的锁定时通过按right键来实现

Vbs 脚本编程简明教程之—妙用 SendKeys 自动上网并登陆博客

将下面的脚本复制到一个文本文件中,并将其文件名命名为:自动登陆.vbs,然后将拨号软件及本脚本一起复制到程序——启动项中,就可以实现自动拨号上网,并登陆到博客上。

Set wshshell=CreateObject("wscript.shell")
wshshell.AppActivate "连接 MAE-301U 拨号连接"
wscript.Sleep 20000
wshshell.SendKeys "{enter}"
wshshell.Run "iexplore"
WScript.Sleep 2000
wshshell.AppActivate "hao123 网址之家 ---实用网址 , 搜索大全 , 尽在 www.hao123.com - MicrosoftInternet Explorer" ' 引号中的内容修改为你的浏览器打开后标题栏中的内容
wshshell.SendKeys "%d"
wshshell.SendKeys "http://passport.***.com/?login"
wshshell.SendKeys "{enter}"
WScript.Sleep 2000
wshshell.SendKeys " 此处修改为博客帐号"
wshshell.SendKeys "{tab}"
wshshell.SendKeys " 此处修改为博客密码"
wshshell.SendKeys "{enter}"
'wshshell.SendKeys "%d"
上面的代码理论上可行,本人没实际运行过,现在大都采用隐性传参,然后跳转,再者,本人对java方面不熟,所以就没深究,但是这个道理都是一样

Set WshShell = WScript.CreateObject("Wscript.shell")
WshShell.Run "iexplore.exe"
WScript.Sleep 2000
WshShell.AppActivate "安全设置风险 - Windows Internet Explorer"
WshShell.SendKeys "%d"
WshShell.SendKeys "http://t.163.com/session"
WshShell.SendKeys "{ENTER}"
这是打开我机器上网易163微博的一段代码,暂且还不知道如何将焦点调到用户名密码输入框,所以,问题留着吧= =





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值