当前位置:DOS资源站资料中心批处理教程 → 可爱批处理——有只鬼手在敲字

可爱批处理——有只鬼手在敲字

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2008-4-18 16:38:17

先感叹一下,BAT的强大,其一或许是,能调用任何能够调用的程序。::12::
因此,除了它本身的语法简约之外,更要赞它是个有组织能力的万能侠。与任何程序都息息相关。
VBS是BAT的莫逆之交,往往要实现某种功能,就得与之打交道。这也应该是非常批处理论坛也要有VBS分论坛板块的原因之一吧。

噢。好了,不说了。先来一段小东西:(提醒:先记下你自己的记事本的字体样式,默认应该是 楷体_GB2312 粗体 14)

@echo off&title DOS资源站 www.cmdos.net
echo sub r(n)>fun.vbs
echo wscript.sleep n>>fun.vbs
echo end sub>>fun.vbs
echo sub k(a)>>fun.vbs
echo w.sendkeys a>>fun.vbs
echo end sub>>fun.vbs
echo s="VeryBat! The best!">>fun.vbs
echo set w=createobject("wscript.shell")>>fun.vbs
echo w.run "notepad.exe">>fun.vbs
echo r 1000>>fun.vbs
echo w.appactivate "无标题 - 记事本">>fun.vbs
echo for i = 1 to len(s)>>fun.vbs
echo k mid(s,i,1)>>fun.vbs
echo r 250>>fun.vbs
echo next>>fun.vbs
echo k "^a":r 250:k "%%of">>fun.vbs
echo r 250:k "%%s100~">>fun.vbs
echo createobject("sapi.spvoice").speak "fay troung peey troo lee luen tongue, war mern de jiao ao!">>fun.vbs
echo 批处理,我们的骄傲!
fun.vbs
del fun.vbs
或许觉得一般般吧。记事本的字体样式已经改变。造成不便,请原谅~麻烦大家根据刚才记下的字体样式还原……
不过,这篇帖要说的是VBS中的SendKeys方法。我认为这个方法就像一把钥匙,能够解决一些不好解决的事情。

代替手工按键,提高工作效率,也是属于批处理的宗旨吧~~
刚才抛砖引玉,晚辈用心再写一篇关于SendKeys的手册。请各位前辈和同窗多多指教!

---------------------------------------------------------------
通俗易懂的SendKeys手册(原创)
---------------------------------------------------------------

1、SendKeys是什么?

一个能够模拟键盘命令的VBS中WScript.Shell对象的方法。

2、那怎么用?

要在一个VBS文件里面运行,当然批处理可以创建这个文件。
首先,创建WScript.Shell对象。然后就可以使用这个对象的SendKeys方法了。
格式是这样的: WScript.Shell对象名.SendKeys "[指令]"
例如:
WSH.SendKeys "^{ESC}uu"
这个命令是模拟键盘,开始菜单——关闭计算机——关闭,简单说就是模拟键盘关机!

3、有哪些指令?

基本上键盘有的键都可以用指令去模拟,除了Windows键和菜单键。
其中特殊指令符号有大中小括号键、百分比号键、加号键、阶乘键(插入记号)和波浪形键(“非”符号),即{}[]()%+^~
除了中括号没有特殊的含义外,其他的均有特殊的作用。

四个常用符号:  + Shift键    % Alt键    ^ Ctrl键    ~ 回车键

{} 大括号是用得最广的符号,用于界定一切数字与字母外的键。
例如:
ESC键 {ESC} 向上键 {UP} 退格键 {BACKSPACE} PageDown键{PGDN} F4键 {F4}
大括号键 {{} 加号键 {+} 百分号键 {%}

() 小括号,用于组合键事件。只有用在四个常用符号的后面才起作用。这个在下面谈。

4、有哪些特殊用法?

组合键和连按键。

组合键指令的第一个指令是那四个常用符号,后面可跟一个或多个非特殊符号指令。
例如:
^F Ctrl+F组合键    %{TAB} Alt+Esc组合键
+(sd) Shift+S+D组合键 ::注意,在使用多指令组合键时,要把特殊符号后的指令用小括号括起来。

连按键指令,顾名思义是同一个键按N次。格式为:{普通指令 数字}
例如:
{K 5} 连续按K键5次
::注意,连按键只能用于普通指令,不能用于那四个特殊指令符号。

5、有哪些技巧或注意的地方?

要注意:
一、指定发送指令的对象   二、处理延迟的现象
因此要用好WScript.Shell的AppActivate方法和脚本宿主的Sleep方法。

若指定发送的对象是新建的记事本,就要 WSH.AppActivate "无标题 - 记事本"
这样就不会把复制黏贴的指令传到QQ去了,如果内容不雅,还会被揍!
::注意,WSH.AppActivate 后面是一个窗口标题的字符串。

延迟现象的出现原因是计算机读取信息或输出信息时都需要一定的时间。
所以要按部就班,给计算机一段等待的时间,再执行下面的模拟指令。

例如:
Set WSH=CreateObject("WScript.Shell")
WSH.Run "Notepad.exe" '打开记事本
WSH.AppActivate "无标题 - 记事本" '激活记事本,赋予焦点
WScript.Sleep 1000 '休息1秒钟
WSH.SendKeys "^V" '复制剪贴板内容到记事本

上面这个基本就囊括了每个要点了。眼睛都有点发麻了。

最后的技巧:
其实不一定要先创建VBS文件。在批处理中,可以这样:
如刷新:
mshta vbscript:createobject("wscript.shell").sendkeys("{F5}")(window.close)
又如关机:
mshta vbscript:createobject("wscript.shell").sendkeys("^{ESC}uu")(window.close)
(全手册 完)