网上教程 - 按键精灵常用功能-详细解说


来源: 兄弟工作组按键精灵讨论区(欢迎大家来讨论)
作者: lolo_xd
标题: 按键精灵常用功能-详细解说

按键精灵常用功能-详细解说[1]-键盘动作按键精灵常用功能-解说[版本5.0以上]
首先-启动按键精灵-看到主程序界面的“小灯泡”增加按钮了吗?点击它...
然后-这样就新建了一个脚本,并进入了脚本编辑器界面。(具体参见Qmacro基础资料http://www.vrbrothers.com/cn/qmacro/)

按键精灵常用功能-详细解说[1]-键盘动作-4个功能
(1)单个按键的模拟-模拟键盘的单个按键动作,可以是按1下、按住不动、弹起来等3种形式,可以根据自己的需要,设定执行次数。
(2)按键组合的模拟-模拟按键组合,比如ctrl+shift+G之类的,但是不能G+H 这样子哦,那要需要的时候怎么模拟G+H呢?使用(1)功能-按下G,再按下H,就等于G+H了嘛~~~(不同步?哦,计算机的反映速度是很快的!)
(3)脚本暂停按任意键继续功能-这里可以设置一个变量,用来表示可能是哪个按键,比如设置了变量key,当key这个变量变动的时候...比如key=49的时候,表示按1就能使脚本继续...那么怎么知道哪个数字对应是哪个按键?请看(4)的功能。
(4)得到按键码-在左边的空白输入一个按键,右边就显示出相应的按键码哦。有一些特殊的按键码是多少呢?可以去下载个ASCII码表看看。
举例:打开一个记事本,光标停空白处,按1下你设定的快捷键开始执行你设计的脚本...

Rem rem只是注释语句,可以做标记或解释用途。
Rem rem这一行,不会有功能,比如:KeyPress 49 10
Rem 按1键10次,换行
KeyPress 49 10
KeyPress 13 1
Rem 按下1键不动,2秒后弹起,换行
KeyDown 49 1
Rem 延时2000毫秒
Delay 2000
KeyUp 49 1
KeyPress 13 1
Rem 按shift+1组合键,换行
KeyDown 16 1
KeyPress 49 1
KeyUp 16 1
KeyPress 13 1
Rem 提示后,等待任意键继续
SayExpression "请按任意键继续吧。"
KeyPress 13 1
Rem 等待任意键继续
WaitKey
Rem 提示后,等待空格键继续
SayExpression "让我们继续,这次按空格才能继续。"
KeyPress 13 1
Rem 等待space空格键继续
WaitKey Pkey
If Pkey<>32
SayExpression "按空格才能继续!"
KeyPress 13 1
Goto 等待space空格键继续
Else
KeyPress 13 1
SayExpression "好的,演示完成了。"
EndIf
Delay 1000
VBSCall CALL MessageBox("演示完成。")
EndScript

以上脚本的疑问:
1.rem-是解释和标记用的,可以让自己思路更有条理和设置方便的跳转goto功能。
2.goto-是表示跳转,后面跟标记。例:“goto 等待space空格键继续” 就是说,跳转到标记了“等待space空格键继续”的地方,和rem配合使用。注意:有2个相同标记的时候,会依次跳转哦!可能就跳不到你想的位置了~~~所以请别使用相同的标记!!
3.delay-表示此处须延时等待,后面的数值单位是毫秒ms,1000表示1000毫秒,也就是1秒啦。
4.SayExpression ""-输出引号内的字符内容,引号里面有什么就输出什么。注意:前提是鼠标光标要停在可以输出字符的地方哦~~~!
5.VBSCall CALL MessageBox()-弹出一个窗,内容是括号内的东西,可以是""里面的字符串,也可以是常量或变量。
6.EndScript-表示脚本结束。
7.为什么按下1键后,没有一直输出“1”?2秒后弹起1键,总共才输出1个“1”?-在记事本程序,如果一直按住1键,就会连续输出“1”,但是记事本是怎么处理“按住1键”的?这和按键精灵的KeyDown有点不同哦。其实,“按住”、“弹起”通常都用于组合键中,比如按下Ctrl、Shift、Alt之类的...
8.为什么等待按键继续的时候,按键的字符也会出现呢?-因为按键精灵是独立于其它程序执行的,就是说按键精灵在运行,记事本本身也在运行,而按键精灵并没有阻止或完全控制记事本的运行...也就是说,按下某个键的同时,既在执行按键精灵的脚本,也在执行某程序本身...(按键精灵操作对象的只是显示出来的屏幕画面本身...)

按键精灵常用功能-详细解说[2]-鼠标动作按键精灵常用功能-详细解说[2]-鼠标动作


按键精灵常用功能-解说[版本5.0以上]
首先-启动按键精灵-看到主程序界面的“小灯泡”增加按钮了吗?点击它...
然后-这样就新建了一个脚本,并进入了脚本编辑器界面。(具体参见Qmacro基础资料

http://www.vrbrothers.com/cn/qmacro/)

按键精灵常用功能-详细解说[2]-鼠标动作-4个功能
(1)模拟鼠标(3键鼠标哦)的按键-可以模拟鼠标的左、右和中键的单击、双击、按下、弹起,并设定

次数。不能模拟滚轮中键的滚动功能,遗憾~!(还是有办法:按中键,再移动鼠标)
(2)模拟鼠标定点移动-移动到某个坐标,绝对坐标哦,坐标系原点O在屏幕左上角,x方向右,y方向

下。这个功能可以方便、准确的把鼠标移动到你想去的点。
(3)模拟鼠标定距离移动-这次是相对移动,无论当前鼠标在什么位置,我们设定的DX,DY是相对坐标

哦,原点是当前鼠标停点,x方向右,y方向下。(这样说是不是太烦了?)这个功能可以方便、准确的把

鼠标移动一定的距离,这个距离是多少,就看你的设定咯~~~
(4)保存和恢复鼠标的位置-记录鼠标位置,快速回位功能,不需要知道此时坐标是多少,不需要知道

距离是多少,只是方便的记录、回位功能。(不过我习惯对数字的东西掌握得一清二楚的,所以很少使

用这功能)

举例:就在这个网页吧,光标停在本帖的第4行第4字处,按一下你设定的快捷键开始执行你设计的脚

本...

Rem 记录保存鼠标位置
SaveMousePos
Rem 左键按下,横拉,竖拉,斜拉,弹起,单击,双击
LeftDown 1
Delay 1000
MoveR 100 0
Delay 1000
MoveR 0 100
Delay 1000
MoveTo 720 540
Delay 1000
LeftUp 1
Delay 1000
Rem 鼠标回位
RestoreMousePos
Delay 1000
LeftClick 1
Delay 1000
LeftDoubleClick 1
Delay 1000
Rem 右键单击,中键单击,右键按下,移动,弹起,鼠标回位
RightClick 1
Delay 1000
LeftClick 1
Delay 1000
MiddleClick 1
Delay 1000
MoveR 0 50
Delay 1000
MiddleClick 1
Delay 1000
RightDown 1
Delay 1000
MoveR 100 0
Delay 1000
MoveR 0 100
Delay 1000
MoveR -100 -100
Delay 1000
RightUp 1
Delay 1000
LeftClick 1
Delay 1000
RestoreMousePos
EndScript

以上脚本的疑问:
1.怎么模拟右键双击?
-使用RightClick 2,
-或者RightClick 1
delay 20
RightClick 1
看自己喜好和需要了(中间双击也一样)
2.LeftClick 2和LeftDoubleClick 1有什么不同嘛?
-这个嘛,就要看按键本身的设置了,LeftClick 2两次之间的延时是多少?LeftDoubleClick 1之间

的延时是多少?我无非用数字回答。
3.MoveTo和MoveR用哪个好?
-没有哪个好哪个差,只有哪个方便。一般知道点坐标来移动就用MoveTo;知道移动的距离就用MoveR

;谁方便用谁,非要用另一个也是可以的,自己计算点坐标和距离吧。
4.中键滚动怎么模拟?
-问问作者吧,加设功能才行,目前的方法:
MiddleClick 1
Delay 1000
MoveR 0 50
Delay 1000
MiddleClick 1
通过MoveR的距离来控制滚动速度,通过MoveR后的延时来控制滚动距离。zui后中间单击结束滚动。
5.USB鼠标,P/S大圆口鼠标,串口鼠标,硬件模拟,软件模拟的问题。
-具体需要咨询作者了,嘿嘿。我只知道这么多啦,我也只是一个普通用户嘛~~~!

按键精灵常用功能-详细解说[3]-控制动作按键精灵常用功能-详细解说[3]-控制动作


按键精灵常用功能-解说[版本5.0以上]
首先-启动按键精灵-看到主程序界面的“小灯泡”增加按钮了吗?点击它...
然后-这样就新建了一个脚本,并进入了脚本编辑器界面。(具体参见Qmacro基础资料http://www.vrbrothers.com/cn/qmacro/)

按键精灵常用功能-详细解说[3]-控制动作-6个功能
(1)抓点颜色并执行语句-通过判断屏幕x,y坐标的某点的颜色,是等于、不等于、还是近似某颜色,来执行后面的动作或控制...抓点颜色教程详见...
(2)循环语句-循环N次,其实这里除了可以用for,还可以用while语句。
(3)条件语句-如果某条件成立,执行某命令...除了简单的If...EndIf,还可以If...else...endif,或if...elseif...elseif...endif等形式。
(4)跳转和调用子程序-跳转用goto,可以跳转到rem标记过的地方,调用子程序用gosub,这里要说明一点是:rem标记和子程序名字一样的话,将也会goto到子程序处,而不仅仅是goto到rem的标记。
(5)标记和子程序-rem除了用来解释,zui重要的作用就是做goto的标记;sub...return子程序的好处,就是不必在主程序写很多相同的代码,使用模块化的子程序,调用方便,结构清晰...不过,zui好使用唯一的子程序名称,和rem的标记名称也要独立唯一,不然容易出错,还有就是同一个子程序未结束的时候再次调用,return的时候容易看错哦。
(6)脚本停止-很简单Endscript表示到此脚本运行完毕。

举例:大家可以找找论坛里的各种脚本,参见其中的这些功能,按下你设定的快捷键开始执行你的脚本...
rem while语句循环
VBS i=0
while i<=9
VBS i=i+1
endfor
VBSCALL CALL messagebox(i)

rem if语句循环
VBS j=0
if j<=10
j=j+1
goto if语句循环
else
VBSCALL CALL messagebox(j)
endif

rem 子程序
VBS k=0
gosub 跳出对话框k

rem 演示rem和sub同名
waitkey
VBS k=0
goto 跳出对话框k
VBS k=0
gosub 跳出对话框k
rem 跳出对话框k
VBS k=100
VBSCALL CALL messagebox(k)

rem 演示重复调用
VBS p=0
VBS pp=1
gosub 重复
VBSCALL CALL messagebox(p)
VBSCALL CALL messagebox(pp)
endscript

sub 跳出对话框k
VBS k=i+j
VBSCALL CALL messagebox(k)
return

Sub 重复
If p=3
Goto 返回
Else
VBSCall CALL messagebox("我是重复")
VBS p=p+1
Gosub 重复
VBS pp=pp+1
EndIf
Rem 返回
VBSCall CALL messagebox(pp)
Return