按鍵精靈的幾個常見操作:激活窗口/讀取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 & "分鍾;" 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM