Vbs脚本编程简明教程之九

妙用SendKeys简化重复操作1<?xml:namespace prefix="o" ns="urn:schemas-microsoft-com:office:office">?xml:namespace>

每次开机的时候,你想自动登陆你的 QQ 或者博客吗?巧妙使用 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 "{x 10}" ”即可。

例一: WshShell.SendKeys "^{ESC}u"

代码的含义为:按下 Ctrl Esc 组合键(相当于按 Win 键)打开“开始”菜单,接着按 U 键打开“关机”菜单。

例二:让 VBS 脚本自动在记事本中输入一行文字“ hello, welcome to cfan ”。

Dim WshShell

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

WshShell.Run "notepad"

WScript.Sleep 2000

// 本行的含义为是脚本暂停 2 秒,给 notepad 一个打开的时间,有时时间太短可能导致后面的字符无法进入编辑区

WshShell.AppActivate " 无标题  -  记事本

"//AppActivate 为寻找可执行程序的标题框,”无标题-记事本”内容你的自己打开看一下

WshShell.SendKeys "hello, welcome to cfan"

作业 1: 让脚本自动输入下面两段小短句

This is the most wonderful day of my life

because I'm here with you now

作业 2 :让脚本在输入短句后自动关闭记事本,并保存文件名为“ test ”,注意关闭记事本可以直接使用组合按键 Alt F4 来实现。

Vbs 脚本编程简明教程之九――

妙用SendKeys简化重复操作2

例三:制作能自动定时存盘的记事本

我们最常用的记事本没有 Word WPS 那样的自动定时存盘功能,其实利用 VBS 脚本再加上 SendKeys 命令,就能弥补这个遗憾。打开记事本,输入以下内容(为容易描述和分析,把代码分为四个部分):

' 第一部分:定义变量和对象

Dim WshShell, AutoSaveTime, TXTFileName

AutoSaveTime=300000

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

TXTFileName=InputBox(" 请输入你要创建的文件名 ( 不能用中文和纯数字 ) ")

' 第二部分:打开并激活记事本

WshShell.Run "notepad"

WScript.Sleep 200

WshShell.AppActivate " 无标题  -  记事本 "

' 第三部分:用输入的文件名存盘

WshShell.SendKeys "^s"

WScript.Sleep 300

WshShell.SendKeys TXTFileName

WScript.Sleep 300

WshShell.SendKeys "%s"

WScript.Sleep AutoSaveTime

' 第四部分:自动定时存盘

While WshShell.AppActivate (TXTFileName)=True

WshShell.SendKeys "^s"

WScript.Sleep AutoSaveTime

Wend

WScript.Quit

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

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

第一部分:定义了脚本中需要用到的变量和对象。“ AutoSaveTime ”变量用来设置自动存盘间隔,单位为毫秒,这里设置为 5 分钟。“ TXTFileName ”变量通过输入框取得你要创建的文本文件名称。

第二部分:运行记事本,对于 Windows 本身提供的程序,比如计算器等,可直接在“ WshShell.Run ”后输入程序名称,如 "calc" ,对于非系统程序,则可输入完全路径,但要注意使用 8.3 格式输入,比如“ "D:\Progra~1\Tencent\QQ.exe" ”。

第三部分:这里用 SendKeys 命令执行了这样的操作流程(请注意每个操作之间延时命令的使用):在记事本中按 Ctrl S 组合键→弹出保存文件的窗口→输入文件名→按 Alt S 组合键进行保存(默认保存在“我的文档”目录)。

第四部分:定时存盘的关键,通过“ While …… Wend ”这个当条件为“真”时循环命令,实现自动存盘代码“ WshShell.SendKeys "^s" ”和定时代码“ WScript.Sleep AutoSaveTime ”的重复执行。因为不能让这个定时存盘循环一直执行,退出记事本后,必须自动退出脚本并结束循环,所以设计了一个循环判断条件“ WshShell.AppActivate TXTFileName=True ”,当记事本运行中时,可以激活记事本窗口,这个条件运行结果为“ True ”,定时存盘循环一直执行,退出记事本后,脚本无法激活记事本窗口,就会跳出循环,执行“ Wend ”后面的“ WScript.Quit ”退出脚本。

例四:快速登陆 QQ 软件。假设 QQ 号码是: 10001 ,密码是: 123456 ,隐身登陆:

set ws=wscript.createobject("wscript.shell") 

ws.run "C:\Progra~1\Tencent\QQ\QQ.exe",0

wscript.Sleep 2000

ws.AppActivate "QQ 用户登录

ws.SendKeys "7015247"

wscript.Sleep 200

ws.SendKeys "{TAB}"

ws.SendKeys "*********"

wscript.Sleep 200

ws.SendKeys "{ENTER}"

例五:关机菜单立刻显身

打开记事本,输入以下命令,并将其保存为 1.vbs

set WshShell = CreateObject("WScript.Shell")

WshShell.SendKeys "^{ESC}u"

双击运行它,你会发现关机菜单立刻出现了。

将“ WshShell.SendKeys "^{ESC}u" ”改为“ WshShell.SendKeys "^+{ESC}" ”,运行一下看看是否打开了任务管理器

你可能感兴趣的:(编程,vbs,sendkeys)