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}" ”,运行一下看看是否打开了任务管理器









本文转自 chengchow 51CTO博客,原文链接:http://blog.51cto.com/chengchow/886793,如需转载请自行联系原作者
目录
相关文章
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
386 0
|
Java 开发工具 数据库
|
存储 小程序 Python
农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序
### 农历节日倒计时:基于Python的公历与农历日期转换及节日查询小程序 该程序通过`lunardate`库实现公历与农历的日期转换,支持闰月和跨年处理,用户输入农历节日名称后,可准确计算距离该节日还有多少天。功能包括农历节日查询、倒计时计算等。欢迎使用! (239字符)
867 86
|
10月前
|
弹性计算 Linux 数据安全/隐私保护
2025最新幻兽帕鲁palworld服务器搭建教程:新手0基础,超简单~
阿里云提供2025年最新幻兽帕鲁游戏服务器申请购买及一键开服教程。支持4核16G(70元/月,8人)和8核32G(160元/月,20人)配置,带宽10M,ESSD云盘100GB。玩家只需选择配置、地域、操作系统并设置密码,系统自动部署游戏程序。本地安装STEAM客户端后,输入服务器IP和端口8211即可开始游戏。详细教程及更多问题解答请访问阿里云幻兽帕鲁游戏专区。
940 56
|
11月前
|
存储 人工智能 搜索推荐
评测 | AI 剧本生成与动画创作
随着短视频行业的快速发展,内容的即时性和创意性备受关注。传统动画制作流程复杂、耗时且成本高,难以跟上热点话题的变化。阿里云的“AI剧本生成与动画创作”解决方案通过AI自动化生成剧本、插图和语音,借助云计算的强大算力,大幅提速创作流程,降低成本,帮助短视频内容更高效、更有创意地生产。 本文将详细介绍该解决方案的部署和实际体验,涵盖从注册阿里云账号、开通相关服务到部署应用的全过程,并分享使用感受。尽管部署简单直观,生成的动画效果目前仍存在不足,但在创意动画和快速生成方面已展现出一定潜力。未来,随着技术的不断优化,期待AI动画创作能带来更高质量的作品,推动行业创新和发展。
583 5
评测 | AI 剧本生成与动画创作
|
存储 C语言 Python
求1+2!+3!+…+20!的和
求1+2!+3!+…+20!的和
398 3
|
11月前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
安全 Nacos 数据安全/隐私保护
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
本文详细介绍了如何在微服务环境下从 Nacos 1.3.0 升级到 2.3.0,并确保 Seata 各版本的兼容性。作者小米分享了升级过程中的关键步骤,包括备份配置、更新鉴权信息及验证测试等,并解答了常见问题。通过这些步骤,可以帮助读者顺利完成升级并提高系统的安全性与一致性。
461 8
升级指南:从Nacos 1.3.0 到 2.3.0,并兼容 Seata 的鉴权配置
|
JSON JavaScript 数据格式
如何使用depcheck检查依赖?
如何使用depcheck检查依赖?
765 115
如何使用depcheck检查依赖?
|
存储 弹性计算 监控
ecs配置与优化
阿里云ECS优化涉及实例规格选择、磁盘存储、网络配置、OS及软件优化、连接数管理、监控自动化和升级扩展。选择合适实例类型、磁盘类型以满足I/O需求,优化网络带宽与安全组规则,保持操作系统更新并调整软件配置。注意监控关键指标,利用弹性伸缩适应业务变化,适时升级资源,实现性能与成本的最佳平衡。
447 3