vbs经典回顾之[键盘输入方法]wshShell.SendKeys

本文介绍VBS脚本中的SendKeys方法,详细解释了如何模拟键盘操作,并提供了多个实际应用场景示例,如自动刷新桌面、启动任务管理器等。
[键盘输入方法]wshShell.SendKeys 方法探析(2010-09-30 14:35:11)
 
模拟键盘操作,将一个或多个按键指令发送到指定Windows窗口来控制应用程序运行, 
其使用格式为:object.SendKeys(string) 

“object”:表示WshShell对象 
“string”:表示要发送的按键指令字符串,需要放在英文双引号中。

Dim wshShell
Set wshShell = CreateObject("Wscript.Shell")
wshShell.SendKeys "{ENTER}"     '模拟键盘操作回车

-----------------------------------
1.基本键 

  一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母“x”,使用“WshShell.SendKeys "x"”即可。当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“happy”,可以使用“ WshShell.SendKeys "happy" ”。

2.特殊功能键 

  对于需要与Shift、Ctrl、Alt三个控制键组合的按键,SendKeys使用特殊字符来表示: 

  Shift---------WshShell.SendKeys "+" 
  Ctrl---------WshShell.SendKeys "^" 
  Alt---------WshShell.SendKeys "%"  (注意:这样使用时,不用大括号括起这些特殊字符。)
  由于“+”、“^”这些字符用来表示特殊的控制按键了,如何表示这些”字符”的按键呢?只要用大括号括住这些字符即可。例如: 要发送加号“+”,可使用“WshShell.SendKeys "{+}"” 

另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称。--如果发送是基本字符用“”括起来。
例如要发送回车键,需要用“ WshShell.SendKeys "{ENTER}" ”表示;
发送向下的方向键用“ Wshshell.SendKeys "{DOWN}" ”表示。 

Space---------WshShell.SendKeys 
Enter---------WshShell.SendKeys "{ENTER}" 
←---------WshShell.SendKeys "{RIGHT}" 
↑---------WshShell.SendKeys "{UP}" 
F1---------WshShell.SendKeys "{F1}" 

按键                代码    
BACKSPACE     {BACKSPACE}, {BS}, 或 {BKSP}    
BREAK         {BREAK}    
CAPS LOCK     {CAPSLOCK}    
DEL or Delete {Delete} 或 {DEL}    
DOWN ARROW    {DOWN}    
END           {END}    
ENTER         {ENTER}或    
ESC           {ESC}    
HELP          {HELP}    
HOME          {HOME}    
INS or Insert {Insert} 或 {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}

Tips:如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKeys允许使用简化格式进行描述,使用格式为“{按键 数字}”。例如要发送10个字母“x”,则输入“WshShell.SendKeys "{x 10}"”即可。

实际应用举例:
-----------------------------------
按下F5刷新桌面 

Dim WshShell,Path,i 
Set WshShell Wscrīpt.CreateObject("Wscrīpt.Shell") 
WshShell.SendKeys "{F5}" 
---------------------------------------------------- 
电脑的自动重启 

set WshShell CreateObject("Wscrīpt.Shell") 
WshShell.SendKeys "^{ESC}u" 
WshShell.SendKeys "R" 
---------------------------------------------------- 
启动任务管理器 

set WshShell CreateObject("Wscrīpt.Shell") 
WshShell.SendKeys "^+{ESC}" 
---------------------------------------------------- 
QQ消息连发 

Dim WshShell 
Set WshShell= Wscrīpt.createObject("Wscrīpt.Shell") 
WshShell.AppActivate "bomb" 
for i=1 to 60 
Wscrīpt.Sleep 800 
WshShell.SendKeys "What do you say" 
WshShell.SendKeys 
WshShell.SendKeys "%s" 
next 
---------------------------------------------------- 
自动到百度搜索歌曲:white flag 

Dim WshShell,Path,i 
Set WshShell Wscrīpt.CreateObject("Wscrīpt.Shell") 
WshShell.Run("IEXPLORE.EXE") 
Wscrīpt.Sleep 2000 
WshShell.AppActivate "about:blank-Microsoft Internet Explorer" 
WshShell.SendKeys "+{TAB}" 
WshShell.SendKeys "http://mp3.baidu.com
Wscrīpt.Sleep 800 
WshShell.SendKeys "{ENTER}" 
Wscrīpt.Sleep 3000 
WshShell.SendKeys "white flag" 
Wscrīpt.Sleep 800 
WshShell.SendKeys "{ENTER}" 
---------------------------------------------------- 
自动关机

Dim WshShell
Set WshShell=Wscrīpt.CreateObject("Wscrīpt.Shell")
Wscrīpt.Sleep 2000
WshShell.Run "shutdown -r -t 120"
wscrīpt.sleep 6000
WshShell.Run "shutdown -a"
---------------------------------------------------- 
在记事本中输入Happy Birthday!并保存为birth.txt 

Dim WshShell 
Set WshShell=Wscrīpt.CreateObject("Wscrīpt.Shell") 
WshShell.Run "notepad" 
Wscrīpt.Sleep 1500 
WshShell.AppActivate "无标题 记事本" 
WshShell.SendKeys "H" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "a" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "p" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "p" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "y" 
Wscrīpt.Sleep 500 
WshShell.SendKeys 
Wscrīpt.Sleep 500 
WshShell.SendKeys "B" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "i" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "r" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "t" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "h" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "d" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "a" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "y" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "!" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "%FS" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "b" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "i" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "r" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "t" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "h" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "%S" 
Wscrīpt.Sleep 500 
WshShell.SendKeys "%FX" 
---------------------------------------------------- 
制作能自动定时存盘的记事本 

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

Dim WshShell, AutoSaveTime, TXTFileName 
AutoSaveTime=300000 
Set WshShell=Wscrīpt.CreateObject("Wscrīpt.Shell") 
TXTFileName=InputBox("请输入你要创建的文件名(不能用中文和纯数字):") 

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

WshShell.Run "notepad" 
Wscrīpt.Sleep 200 
WshShell.AppActivate "无标题 记事本" 

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

WshShell.SendKeys "^s" 
Wscrīpt.Sleep 300 
WshShell.SendKeys TXTFileName 
Wscrīpt.Sleep 300 
WshShell.SendKeys "%s" 
Wscrīpt.Sleep AutoSaveTime 
'第四部分:自动定时存盘 
While WshShell.AppActivate (TXTFileName)=True 
WshShell.SendKeys "^s" 
Wscrīpt.Sleep AutoSaveTime 
Wend 
Wscrīpt.Quit 

---------------------------------------------------- 

自动死机o(∩_∩)o...

DIM WSHSHELL 
SET WSHSHELL=Wscrīpt.CreateOBJECT("Wscrīpt.SHELL") 
'WSHSHELL.RUN 
'Wscrīpt.SLEEP 1000 
WSHSHELL.SENDKEYS "{ENTER}" 
'Wscrīpt.SLEEP 1000 
WSHSHELL.SENDKEYS "{ENTER}" 
'Wscrīpt.SLEEP 1000 
WSHSHELL.SENDKEYS "{ENTER}" 
'Wscrīpt.SLEEP 1000 
WSHSHELL.SENDKEYS "{ENTER}" 
'Wscrīpt.SLEEP 1000 
WSHSHELL.SENDKEYS "{ENTER}" 


转自:http://www.cnblogs.com/xhyang110/archive/2011/03/25/1995327.html


<think>首先,用户的问题是关于关闭浏览器的VBS脚本。用户说:“我想查找用于关闭浏览器的vbs脚本 请问关闭浏览器的vbs脚本”。我需要根据提供的站内引用来回答。 回顾站内引用: - 引用[1]:讨论VBS安全防范,但没有直接相关。 - 引用[2]:介绍VBS是什么,提到它用于自动化任务。 - 引用[3]:提到使用SendKeys命令模拟键盘操作,可以用于控制应用程序。 - 引用[4]:提到VBS脚本可以用于系统启动时打开应用,如微信。 - 引用[5]:提到Linux上类似VBS脚本,但内容是Win32查询,不直接相关。 用户引用[3]特别提到了SendKeys命令,用于模拟键盘操作来控制应用程序。这很相关,因为关闭浏览器可以通过发送键盘快捷键来实现,比如Alt+F4。 用户引用[4]也提到了VBS脚本可以用于各种任务,包括模拟鼠标点击等。 所以,我可以基于SendKeys命令来创建一个关闭浏览器的VBS脚本。 可能的VBS脚本思路: - 使用WScript.Shell对象来运行命令或发送按键。 - 为了关闭浏览器,我可以: - 发送Alt+F4键到活动窗口来关闭当前窗口。 - 或者,更精确地,找到特定浏览器的进程并结束它(但SendKeys更安全,因为它模拟用户操作,而不是强制终止进程)。 使用SendKeys发送Alt+F4: 在VBS中,SendKeys的语法是:object.SendKeys(string) - Alt键是 "%" - F4键是 "{F4}" 所以,Alt+F4 是 "%{F4}" 脚本示例: ```vbs Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.SendKeys "%{F4}" ``` 这将发送Alt+F4到活动窗口,关闭它。 但用户可能想关闭所有浏览器窗口或特定浏览器。这个脚本会关闭当前活动窗口。 如果用户想关闭所有浏览器实例,我可能需要循环结束进程。但引用中没有直接提到,所以我应该优先使用SendKeys方法,因为它更常见且安全。 参考引用[3],它说:“巧妙使用VBS中的SendKeys命令...模拟键盘操作”。 所以,我会创建一个使用SendKeys的脚本。 完整脚本: ```vbs ' 关闭浏览器的VBS脚本 Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.SendKeys "%{F4}" ' 发送Alt+F4关闭活动窗口 ``` 但为了更可靠,我可以添加一个延迟或检查,但简单脚本应该足够。 现在,关于回答结构: - 系统级指令:我需要使用$...$和$$...$$格式,但这里没有数学表达式,所以可能不需要。用户问题是关于脚本的,没有数学内容。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾添加引用标识,例如[^1]。 用户可见层:回答结构清晰,逐步解决问题。 步骤: 1. 解释方法:基于SendKeys命令。 2. 提供脚本代码。 3. 解释脚本如何工作。 4. 生成相关问题。 引用:当引用站内内容时添加引用标识。 例如,提到SendKeys命令时引用[^3]。 生成相关问题: - 例如:如何修改脚本以关闭特定浏览器?或如何使用VBS结束进程? 相关问题例子: 1. 如何关闭特定应用程序的VBS脚本? 2. VBS中如何结束进程? 3. 如何定时执行关闭浏览器的脚本? 确保回答真实可靠。 </think> ### 关闭浏览器的VBS脚本实现 基于您的查询,我将通过VBS脚本实现关闭浏览器的功能。VBSVBScript)是一种基于Visual Basic的脚本语言,常用于Windows系统自动化任务,如模拟键盘操作或控制应用程序。参考站内引用,特别是利用`SendKeys`命令来模拟键盘快捷键(如Alt+F4)关闭当前活动窗口[^3]。这种方法安全可靠,因为它模拟用户操作,避免强制终止进程可能引发的系统不稳定。 下面,我将逐步说明如何创建和使用该脚本。 #### 步骤1: 创建VBS脚本文件 创建一个文本文件(例如:`close_browser.vbs`),并将以下代码复制进去。这个脚本使用`WScript.Shell`对象的`SendKeys`方法发送Alt+F4快捷键来关闭当前活动窗口(通常是浏览器窗口)。 ```vbs ' 关闭浏览器的VBS脚本 Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.SendKeys "%{F4}" ' "%" 表示Alt键, "{F4}" 表示F4键, 组合为Alt+F4 ``` **脚本说明:** - `Set WshShell = WScript.CreateObject("WScript.Shell")`: 创建一个Shell对象,用于执行系统命令或发送按键。 - `WshShell.SendKeys "%{F4}"`: 发送Alt+F4快捷键,这会关闭当前活动窗口(例如,如果您正在使用的浏览器窗口处于前台)。 - **适用场景**:此脚本在浏览器窗口为活动状态时最有效。如果浏览器最小化或在后台,可能无法关闭;您需要先激活浏览器窗口。 #### 步骤2: 运行脚本 - 保存文件后,双击`.vbs`文件即可运行。 - **测试建议**:运行脚本前,确保浏览器窗口是当前活动窗口(即您最近点击的窗口)。如果脚本无效,尝试先点击浏览器窗口再运行。 - **安全提示**:VBS脚本应谨慎使用,避免来源不明脚本以防恶意操作。参考安全编码原则,建议在受信任环境中测试。 #### 替代方法:结束浏览器进程 如果`SendKeys`方法不适用(例如,您想强制关闭所有浏览器实例而不依赖活动窗口),可以使用WMI(Windows Management Instrumentation)结束进程。但请注意,强制结束进程可能导致数据丢失,仅建议在必要时使用。以下是示例脚本: ```vbs ' 结束所有Chrome浏览器进程的VBS脚本(适用于Google Chrome) Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name LIKE '%chrome.exe%'") For Each objProcess in colProcesses objProcess.Terminate() Next ``` **参数调整**: - 替换`'%chrome.exe%'`为其他浏览器进程名(如`'%msedge.exe%'` for Microsoft Edge, `'%firefox.exe%'` for Firefox)。 - 此方法基于WMI查询,类似引用[5]中提到的目录查询逻辑[^5]。 #### 注意事项 - **浏览器兼容性**:`SendKeys`方法适用于所有浏览器(如Chrome、Edge、Firefox),因为它依赖系统快捷键。结束进程方法需指定进程名。 - **自动化扩展**:您可以结合定时任务工具(如《定时执行专家》)定时运行此脚本,实现开机自动关闭浏览器等功能[^4]。 - **性能影响**:`SendKeys`方法轻量级,几乎无性能开销;结束进程方法可能稍慢,但更彻底。 如果脚本不工作,检查浏览器是否被其他应用遮挡,或尝试以管理员权限运行脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值