• AutoIt:AutoIt比我想象的更加强大


    前段时间,我一直认为,通过AutoIt进行自动化操作,也只有几个方法可以用,它们只是controlClick, controlsend等如下图:

    我一直认为,AutoIt的所有的GUI 方法,都是用来创建界面使用的。

    今天,开发找我,让我把他的一个GUI页面上所有的资源获取下来:

    页面上一个ListView中,一共有大约70个list,我现在需要遍历这70个list,然后当该list获取焦点的时候,右键点击,然后在弹出框中点击第二个选项,从而保存图片?

    我一直期待能找到一个函数,比喻:ControlGetFocusPos,可是没有这个函数,mouseGetPos函数只能获取鼠标所在的位置,google搜索也得不到想要的答案。

    问题最终还是被我解决了:

    1. 遍历每个list的位置坐标X, Y;

    2. 在该坐标上右键点击;

    3. 用键盘上的Down和Enter键,点击弹出框的第二个按钮;

    4. 保存相应资源

    具体代码如下:

    #include <GuiListView.au3>
    ;获取窗口句柄
    $handle = WinGetHandle(".NET Reflector 6")
    WinActivate($handle)
    ;获取控件句柄;
    $control = ControlGetHandle($handle,"","WindowsForms10.SysListView32.app.0.232467a_r11_ad11")
    ;获取列表中List数目
    $count = ControlListView($handle,"",$control,"GetItemCount")
    
    for $i = 1 to 10
        ;获取位置信息
        $x = _GUICtrlListView_GetItemPositionX($control, $i-1)
        $y = _GUICtrlListView_GetItemPositionY($control, $i-1)
    
        ControlClick($handle,"", $control,"right",1, $x, $y)
        ControlSend($handle,"",$control,"{down 2}{enter}")
        WinWait("Save As")
        WinWaitActive("Save As")
        $handle2 = WinGetHandle("Save As")
        ControlSetText($handle2,"", "Edit1", "C:UserschenpassionDesktopAutoitpic" & $i & ".png")
        ControlClick($handle2,"","Button1")
        WinWaitClose("Save As")
        ControlSend($handle,"",$control,"{down}")
    Next

    看来又有得深入学习了!

    _GUICtrl***函数,是非常强大的,可以做更多的识别页面元素,操作Windows GUI 控件。

  • 相关阅读:
    C#之app.config、exe.config和vshost.exe.config作用区别
    C#中decimal ,double,float的区别
    C#中取整,向上取,向下取
    mybatis中的#和$的区别
    mybatis在xml文件中处理大于号小于号的方法
    ORACLE分页查询SQL语法——高效的分页
    移除powerdesigner中Recent Files中无效链接的文件
    Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
    ORA-12638: 身份证明检索失败 的解决办法
    态度决定一切《跟任何人都聊得来》
  • 原文地址:https://www.cnblogs.com/autotest/p/3299200.html
Copyright © 2020-2023  润新知