因工作需要,寫了一個按鍵精靈的程序,用於實現自動登錄某網站的功能,特意記錄如下常見操作:
一、激活窗口
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 & "分鍾;"