`
no791no
  • 浏览: 18979 次
社区版块
存档分类
最新评论

VBS运用之妙用SendKeys

 
阅读更多

VBS运用之妙用SendKeys
2010年11月12日
  每次开机的时候,你想自动登陆你的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来实现。
  例三:制作能自动定时存盘的记事本
  我们最常用的记事本没有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”退出脚本。
  例四:关机菜单立刻显身
  打开记事本,输入以下命令,并将其保存为1.vbs:
  set WshShell = CreateObject("WScript.Shell")
  WshShell.SendKeys "^{ESC}u"
  双击运行它,你会发现关机菜单立刻出现了。
  将“WshShell.SendKeys "^{ESC}u"”改为“WshShell.SendKeys "^+{ESC}"”,运行一下看看是否打开了任务管理器。
  让我们举个例子利用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 - Microsoft
  Internet Explorer" '引号中的内容修改为你的浏览器打开后标题栏中的内容
  wshshell.SendKeys "%d"
  wshshell.SendKeys "http://passport.baidu.com/?login"
  wshshell.SendKeys "{enter}"
  WScript.Sleep 2000
  wshshell.SendKeys "此处修改为博客帐号"
  wshshell.SendKeys "{tab}"
  wshshell.SendKeys "此处修改为博客密码"
  wshshell.SendKeys "{enter}"
  wshshell.SendKeys "%d"
  VBS中Sendkey键盘对应的码表
  Key Code
  ------------------------------
  Shift +
  Ctrl ^
  Alt %
  BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
  BREAK {BREAK}
  CAPS LOCK {CAPSLOCK}
  DEL or DELETE {DELETE} or {DEL}
  DOWN ARROW {DOWN}
  END {END}
  ENTER {ENTER}or ~
  ESC {ESC}
  HELP {HELP}
  HOME {HOME}
  INS or INSERT {INSERT} or {INS}
  LEFT ARROW {LEFT}
  NUM LOCK {NUMLOCK}
  PAGE DOWN {PGDN}
  PAGE UP {PGUP}
  PRINT SCREEN {PRTSC}
  RIGHT ARROW {RIGHT}
  SCROLL LOCK {SCROLLLOCK}
  TAB {TAB}
  UP ARROW {UP}
  F1 {F1}
  F2 {F2}
  F3 {F3}
  F4 {F4}
  F5 {F5}
  F6 {F6}
  F7 {F7}
  F8 {F8}
  F9 {F9}
  F10 {F10}
  F11 {F11}
  F12 {F12}
  F13 {F13}
  F14 {F14}
  F15 {F15}
  F16 {F16}
分享到:
评论

相关推荐

    高中语文苏教版必修5 “运用之妙,存乎一心”同步练习.doc

    高中语文苏教版必修5 “运用之妙,存乎一心”同步练习.doc

    运用之妙存乎一心教(学)案.doc

    运用之妙存乎一心教(学)案.doc

    2013年中国数据库大会-16-运用之妙 存乎一心—— Oracle优化器案例与算法解析

    一年一度的中国数据库技术大会(DTCC)又将与大家见面了! 2013年4月18~4.20日,北京福朋喜来登酒店,第四届中国数据库技术大会将拉开序幕。 自2010年以来,国内领先的IT专业网站IT168联合旗下ITPUB、...

    ZDM软件用户手册.pdf

    工具俯首可得, 运用之妙存乎一心。 经过工程测试, 如果你只使用该软件的通用 高 功能部分,综合效率可提高 5 5 0% ,如果你使用它的专业通用部分,综合效率可提 数 高数倍以上。如果你使用它的专业部分,综合效率可...

    ZDM水工设计软件v2006单机版安装免费版

    ZDM水工设计软件是一款基于autocad进行二次开发的专业水工设计工具,可以应用于水利设计、计算以及相应的图纸设计等操作,软件在界面上与我们使用的autocad相同,包含了规划软件包、钢筋图软件包、电气软件包、管道...

    ZDM软件指导手册

    软件采用分布组件工具集方式,各种工具俯首可得, 运用之妙存乎一心。经过工程测试,如果你只使用该软件的通用功能部分,综合效率可提高50%,如果你使用它的专业通用部分,综合效率可提高数倍以上。如果你使用它的...

    zdm软件用户手册

    工具俯首可得, 运用之妙存乎一心。 经过工程测试, 如果你只使用该软件的通用 高 功能部分,综合效率可提高 5 5 0% ,如果你使用它的专业通用部分,综合效率可提 数 高数倍以上。如果你使用它的专业部分,综合效率可...

    软件测试用例详解UML

    )在使用UML的开发过程中,需求是用Use Case来表达的,界面是在Use Case的辅助下设计的,很多类是根据Use Case来发现的,测试实例是根据Use Case来生成的,包括整个开发的管理和任务分配,也是依据Use Case来组织的...

    Linux-Shell脚本攻略

    Linux大神关于脚本编写的实战之作,于细微处见妙谛,运用之妙,存乎一心,学习Linux Shell编程的不二之书

    2013年中国数据库大会PPT第一部分

    16.运用之妙 存乎一心—— Oracle优化器案例与算法解析.pdf 17.DM7 MPP架构——同时满足OLAP与OLTP需求.pdf 18.SAP 让大数据飞翔.pdf 19.阿里数据库关键技术.pdf 20.基于Oracle的SQL优化典型案例分.pdf 21.赢在起点...

    2013中国数据库大会ppt(1)

    运用之妙 存乎一心—— Oracle优化器案例与算法解析.pdf DM7 MPP架构——同时满足OLAP与OLTP需求.pdf SAP 让大数据飞翔.pdf 阿里数据库关键技术.pdf 基于Oracle的SQL优化典型案例分.pdf 赢在起点–谈数据库设计规范....

    2013中国数据大会ppt(2)

    运用之妙 存乎一心—— Oracle优化器案例与算法解析.pdf DM7 MPP架构——同时满足OLAP与OLTP需求.pdf SAP 让大数据飞翔.pdf 阿里数据库关键技术.pdf 基于Oracle的SQL优化典型案例分.pdf 赢在起点–谈数据库设计规范....

    2013中国数据库大会ppt(3)

    运用之妙 存乎一心—— Oracle优化器案例与算法解析.pdf DM7 MPP架构——同时满足OLAP与OLTP需求.pdf SAP 让大数据飞翔.pdf 阿里数据库关键技术.pdf 基于Oracle的SQL优化典型案例分.pdf 赢在起点–谈数据库设计规范....

    ZDM2014v13.0 141103网络&单机版.7z

    内容包括水利电设计的各个专业采用分布组工具集方式,种工具俯首可得 , 运用之妙存乎一心。 经过工程测试 ,如果你只使用 该软件的通如果你只使用 该软件的通如果你只使用 该软件的通功能部分,综合效率可提高 功能...

Global site tag (gtag.js) - Google Analytics