按键精灵的几个常见操作:激活窗口/读取Excel/FindPic/组合键输入/等待用户输入/拷贝剪贴板/等待网站返回/读写文本/统计运行时间
因工作需要,写了一个按键精灵的程序,用于实现自动登录某网站的功能,特意记录如下常见操作:
一、激活窗口
Delay 1000
Hwnd = Plugin.Window.Find(0, "Microsoft Excel - MyTest.xls [兼容模式]") Call Plugin.Window.Active(Hwnd)
Delay 1000
其中,窗口句柄参数,可以通过【抓抓】-》句柄-》选择句柄-》查看句柄信息获得。加入Delay 1000,是保证窗口能够正常打开。
二、打开Excel、读取写入数据、关闭Excel
Call Plugin.Office.OpenXls("D:\TDDOWNLOAD\MyTest.xls") For i = 1 To 200 // 读取数据、 Text = Plugin.Office.ReadXls(1, i, 1)
// 写入数据
Call Plugin.Office.WriteXls(1, 1, 3, startRow + i)
// 其它处理 Next Plugin.Office.CloseXls
其中,ReadXls第一个参数为Sheet位置,第二个为行,第三个为列。写入数据,多一个参数:写入的值。
三、FindPic应用
// 提交表单 FindPic 0, 0, 1366, 768, "D:\TDDOWNLOAD\query.bmp", 0.9, intX, intY If intX > 0 and intY > 0 Then MoveTo intX + 50, intY + 10 LeftClick 1 Else MsgBox "哪儿出错了?找不到query图片!" Goto EndProcess End If
其中,query.bmp是通过【抓抓】解析得出的——这点很重要。如果你用QQ截图得出query.bmp,可能FindPic得不到你想要的结果,即便把0.9改为0.8也是如此。
四、组合键输入
下面代码实现Ctrl+A(全选),然后Delete的功能:
KeyDown "Ctrl", 1 KeyPress "A", 1 KeyUp "Ctrl", 1 KeyPress "Delete", 1
五、等待用户键盘输入
因为登录网站验证码过于复杂,没有实现自动化,需要用户自己输入,验证码长度为4。等待用户输入的代码如下:
FindPic 0, 0, 1366, 768, "D:\TDDOWNLOAD\check.bmp", 0.9, intX, intY If intX > 0 and intY > 0 Then MoveTo intX + 80, intY + 10 LeftClick 1 Else KeyPress "Tab", 1 End If Delay 100 key = WaitKey() key = WaitKey() key = WaitKey() key = WaitKey()
注意,最后四行代码,表示等待用户键盘输入4位长度验证码,然后程序接着往下走。
六、拷贝剪贴板内容
下面代码,为等系统剪贴板有内容,且长度大于3,则输出系统剪贴板内容,清空剪贴板,跳出循环。
Do Clipboard = Plugin.Sys.GetCLB() If Len(Clipboard) >= 3 Then // 假如剪贴板有内容,输入值,然后清空剪贴板,跳出循环 KeyDown "Ctrl", 1 KeyPress "A", 1 KeyUp "Ctrl", 1 KeyPress "Delete", 1 SayString Clipboard Call Plugin.Sys.SetCLB("") Exit Do End If Delay 100 Loop
七、等待网站返回结果
// 等待网站处理结果,此段代码为循环操作,直到有结果出来 Do // 返回结果:登录成功 FindPic 0, 0, 1366, 768, "D:\TDDOWNLOAD\succ.bmp", 0.9, intX, intY If intX > 0 and intY > 0 Then Goto EndProcess End If // 返回结果:有错误发生 FindPic 0, 0, 1366, 768, "D:\TDDOWNLOAD\error.bmp", 0.9, intX, intY If intX > 0 and intY > 0 Then MoveTo intX + 45, intY + 10 LeftClick 1 // 跳出循环 Exit Do End If Delay 100 Loop
八、读写文本文件
fileLen = Plugin.File.GetFileLength("D:\TDDOWNLOAD\Work.txt") fileHandle = Plugin.File.OpenFile("D:\TDDOWNLOAD\Work.txt") Call Plugin.File.SeekFile(fileHandle,fileLen) Call Plugin.File.WriteLine(fileHandle, Text) Call Plugin.File.CloseFile(fileHandle)
九、统计运行时间
// 程序开始地地方,记录起始时间 startTime = Plugin.Sys.GetTime() // 程序结束的地方,统计运行时间 totalTime = Round((Plugin.Sys.GetTime() - startTime)/1000/60) TracePrint "总处理时间:" & totalTime & "分钟;"