按键精灵应用紧急
按键精灵 鼠标形状变化 判断 点击'这个是执行1次的代码,需要设置无线循环var = GetCursorShape(0) '获取当前鼠标特征码If var = 1055991329 Then '如果是链接,鼠标是手形,会等于1055991329,这个特征码可以通过抓抓工具--鼠标 里面获取LeftClick 1 '点击Delay 1000End If按键精灵 句柄 获得句柄 控制windows窗口 后台新建一个文本文档,打开,Windows就会给这个文本文档的窗口临时分配唯一的一串数字来标识这个窗体,以区别于其他窗口,这串数字就叫句柄。因为句柄是临时随机分配的,所以每次虽然是打开同一个文件,但是分配到的一串数字却是不一样的。所以我们要通过窗体的标题栏来确定每次不同的句柄。例如,我打开一个“新建 文本文档 (5).txt”,打开,文本文档的标题栏是“新建 文本文档 (5).txt - 记事本”,那么,我就通过“新建 文本文档 (5).txt - 记事本”(注意:不是文件名)来查找这个文本文档的句柄。Hwnd = Plugin.Window.Find(0, "新建 文本文档 (5).txt - 记事本")Delay 2000然后通过句柄对这个文档进行最大化操作Plugin.Window.Min HwndDelay 2000要对这个文本文档进行写入,就要另外单击文本区域,文本区域是这个窗体的一部分,有自己的句柄,我们称之为“子句柄”。我们可以通过刚才找到的窗口句柄,类(抓抓里面获取),来查找窗体里面的某一独立部分的子句柄。然后对子句柄所标识的窗体部分写入文本。HwndEx = Plugin.Window.FindEx(Hwnd, 0, "Edit", 0)Delay 2000Call Plugin.Window.SendString(HwndEx, "hello,word,I am the king")Delay 2000“全部命令”--“插件命令”--“windows 窗口插件” 可找到以上函数后台:什么意思?比如一个游戏,窗口最大化后,我们可以玩;但是我们把它最小化后,虽然我们看不见了,它还是没有停止,它还在幕后(前台后面)继续运行,这个就叫后台。又例如,我们挪动鼠标双击我的电脑,这个过程可视;如果通过后台执行这个操作,我们虽然看不到鼠标挪动的过程,但是也可以达到双击我的电脑的效果。Hwnd = Plugin.Window.MousePoint() 获得当前鼠标所在窗体的句柄的命令Call Plugin.Bkgnd.LeftClick(Hwnd, 36, 98) 在后台单击选中“我的电脑”,前提是执行时候鼠标要挪到桌面上。貌似按键精灵对鼠标后台双击单击做得不好,有时不灵。Hwnd = Plugin.Window.MousePoint()XY = Plugin.Bkgnd.FindColor(Hwnd, 0, 0, 1024, 768, "0201E1") '区域找色ZB = InStr(XY, "|")X = Clng(Left(XY, ZB - 1))Y = Clng(Right(XY, Len(XY) - ZB))MsgBox "x"&X &"y"& Y '弹出窗口,指定颜色如果找到,显示他的点的坐标注意:插入语句默认是X = Clng(Left(XY, ZB - 1)): Y = Clng(Right(XY, Len(XY) - ZB))这样的要把冒号改掉,分2行。获得句柄的几个函数。注意,如果不打开窗口,是无法获得句柄的。标题名也不能写错,写错也无法获取。但是会有返回值。Hwnd = Plugin.Window.GetKeyFocusWnd() 获得当前激活的窗口句柄,激活的窗口鼠标不一定在上面Hwnd = Plugin.Window.MousePoint() 获得鼠标当前停留的窗口的句柄,当前窗口状态未必激活(被点选)Hwnd = Plugin.Window.Find(0, "无标题 - 记事本") 获取窗口标题栏为“无标题 - 记事本”的窗口的句柄一般优先使用Plugin.Window.Find,如果窗口标题不固定,再考虑使用其他两个函数Hwnd = Plugin.Window.Find(0, "新建 文本文档 (7).txt - 记事本")sRect = Plugin.Window.GetClientRect(Hwnd) '获取窗口的4个坐标myArray=Split(srect,"|") '分离出四个坐标 因为Split就是数组函数,所myArray虽然没有定义,也被默认定义成了动态数组变量MessageBox myArray(0) & "," & myArray(1) '显示出变量起始点的坐标a = CLng(myArray(0)) '将变量里的值从字符变为数字类型,然后才能用moveTo函数b = CLng(myArray(1))MoveTo a, b获取窗口坐标的目的:窗口的位置不固定,但是窗口内的内容相对于窗口的位置是固定的,“绝对坐标”+“相对坐标”,结合ifColor函数,进行判断KeyDown 就要记得 keyUp截取一部分,才有共性。比如找图,找游戏人物,不建议截取增个人,因为人的穿着装备是会变化的;可以截取脸部或者其他一部分。抓抓工具,可以设定起始坐标,来获得相对坐标。用户自定义变量http://zy.anjian.com/index.php?action-viewnews-itemid-220用户自定义变量,也就是说用户可以输入参数(在脚本属性--其他),然后传给程序执行,提高程序灵活性。UserVar TheKeyYouPress "你要按下的键" '注意最后的中文是固定格式,一定要有,不是注释UserVar TheTimeYouWant "你要按几次"For TheTimeYouWantKeyPress TheKeyYouPress, 1NextOCX界面(很鸡肋的一个功能,效果也不好,建议直接用“用户自定义变量”)利用VB对C:\Program Files\按键精灵9\source\自定义界面例子(VB 6.0)\VB-BIG-001\QMacroUI.vbp修改制作界面,然后做成OCX文件。然后再按键精灵右侧 脚本属性--其他--设置界面 里面,把OCX文件包含进来。主要原理:例如,VB设计界面的时候,文本框的名称设置成 TheKeyYouPress 要和按键精灵脚本的自定义变量UserVar TheKeyYouPress "你要按下的键",两个要一样。http://www.aipai.com/c9/ODY9JSknImgnaiYp.html 例子里面大致那样,实际用按键精灵9用起来还有一定问题。例子里面改了很多地方,其实主要功能就是保存上次你输入的参数,一个将保存好的参数导出。按键精灵 插件 函数复用 界面制作
我们自己编写、又经常用到函数,可以制作成DLL插件,在按键精灵里进行重复使用,而不需要反复复制粘贴。用VB打开C:\Program Files\按键精灵9\source\QMPlugin插件制作模版(VB 6.0),文件--生成XXX.dll再把这个DLL文件放入C:\Program Files\按键精灵9\plugin\文件夹下打开按键精灵,在“全部命令”--“插件命令”的最后,就有这个刚生成的插件了,里面编写的函数就可以使用了。选中某个函数,在最下面,会有Plugin.QMVBPlugin.Test2 参数1,参数2,插入后,还不能正常使用,正确的使用应该是这样的:Plugin.QMVBPlugin.Test2(2,3),一定要加括号。界面制作http://zy.anjian.com/index.php?action-viewnews-itemid-160跟C#制作界面差不多,也是双击界面的按钮进去编程。注意:界面的背景窗体默认是Form1,写脚本的时候,正确 form1.InputBox.Text错误 InputBox.Text 认不出是哪个窗体的界面编写脚本的时候,要在右边脚本属性最下面,“界面设置”里面,选择“使用按键精灵制作界面”,脚本和界面才会结合到一起。调试的时候,如果按F10,只是运行脚本,界面不会运行;要点击左下角“启动F10”上面的“ 自定义界面”,才会运行自定义界面。按键精灵 计算excel非空 有多少行 读取Excel 漏行 复制excel单用按键精灵要关掉360安全卫士和360杀毒录制录像尽量用快捷键,不会出错;用鼠标很容易出问题,几次可以,到某次突然不行。按键精灵的粘贴板,不同于windows的粘贴板,不能调用按键精灵的setCLB设置粘贴板内容,然后用Ctrl+V粘贴出来,这样会乱码。setCLB一定和GetCLB配合使用。虽然按键精灵可以ReadXls,逐行读取,但是好像会漏行。漏行的原因,for i=1 to 65534 next 之间,不需要有i=i+1.'text="hello world"'Call Plugin.Sys.SetCLB(text)'msgbox plugin.sys.GetCLB()Dim textDim i,jCall Plugin.Office.OpenXls("C:\province.xls") '打开excel,后面注意要关闭For i=1 To 65534text = Plugin.Office.ReadXls(1, i, 1)If text = "" Then '如果已经是空单元格了,退出循环Exit forEnd Ifi=i+1NextMsgBox i - 1 '弹出消息框 有多少行Call Plugin.Office.CloseXls() '关闭excleFor j=1 to i-1Call Plugin.Office.OpenXls("C:\province.xls")text = Plugin.Office.ReadXls(1, j, 1)fileHandle=Plugin.File.OpenFile("c:\c.txt")Call Plugin.File.WriteLine(fileHandle, Text)Call Plugin.File.CloseFile(fileHandle)Call Plugin.Office.CloseXls()'j = j + 1'*可以录制录像,对c.txt的内容进行复制操作,粘贴到其他地方Next