• 按键精灵的几个常见操作:激活窗口/读取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:TDDOWNLOADMyTest.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:TDDOWNLOADquery.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:TDDOWNLOADcheck.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:TDDOWNLOADsucc.bmp", 0.9, intX, intY
            If intX > 0 and intY > 0 Then 
                Goto EndProcess
            End If
    
            // 返回结果:有错误发生
            FindPic 0, 0, 1366, 768, "D:TDDOWNLOADerror.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:TDDOWNLOADWork.txt")
                fileHandle = Plugin.File.OpenFile("D:TDDOWNLOADWork.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 & "分钟;" 
  • 相关阅读:
    对于线程同步的浅薄理解
    线程安全之ConcurrentQueue<T>队列
    关于mybatis拦截器,对结果集进行拦截
    oracle 分析函数
    C# ikvm 运行htmlunit Provider com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl not found
    IronJs 无相关源?
    js div 内容显示分页
    JavascriptTAB切换 AND JqueryTAB切换
    php中mysql数据库操作类 -李盛鹏 -博客园
    sublime text 之snippet功能的使用 -李盛鹏 -博客园
  • 原文地址:https://www.cnblogs.com/nayitian/p/15031881.html
Copyright © 2020-2023  润新知