【问题标题】:How to get handle of the most recently opened window autoit?如何获取最近打开的窗口 autoit 的句柄?
【发布时间】:2014-02-12 09:09:44
【问题描述】:

我正在尝试自动测试应用程序。打开应用程序时,它可能会打开一个弹出窗口或安全警报,我想处理它。那么有没有办法在 AutoIt 中获取最近打开的窗口的句柄或标题?

【问题讨论】:

    标签: autoit


    【解决方案1】:

    也许您需要添加一些选项。 WinSearchChildren ...

    包括

    Example()
    
    Func Example()
        ; Retrieve the window title of the active window.
        Local $sText = WinGetTitle("[ACTIVE]")
    
        ; Display the window title.
        MsgBox($MB_SYSTEMMODAL, "", $sText)
    EndFunc   ;==>Example
    

    【讨论】:

    • 有没有办法获取窗口打开的时间或保持窗口打开的顺序?
    • 您可以将检查功能放入一个循环并检查所有窗口.. 假设每 250 毫秒对您的 CPU 没有任何明显影响。您需要做的就是比较现在和 250 毫秒之前的列表 :-)
    • 是的,只需使用WinWait("[REGEXP:.*Title.*|.*Title2.*]") 等待一些窗口出现并从那里开始处理它们...这不会占用太多 CPU,并且当窗口具有这样的给定值时立即得到结果标题出现。
    【解决方案2】:

    当需要每 60 秒看到一个窗口“闪烁”时,我遇到了这个问题,某些东西抓住了焦点,然后又变回原来的窗口。我能够编写以下内容并捕获劫机者。

        ;what is the current active window
    
    $Win1 = ""
    $Win2 = ""
    $Win3 = ""
    $Win4 = ""
    $Win5 = ""
    $Win6 = ""
    
    
    HotKeySet("{F1}","myExit")
    
    while(1)
       $blah = WinGetTitle("[ACTIVE]")
       if $blah <> $Win1 Then
          $Win6 = $Win5
          $Win5 = $Win4
          $Win4 = $Win3
          $Win3 = $Win2
          $Win2 = $Win1
          $Win1 = $blah
       EndIf
       ToolTip("Last Active Windows: [press F1 to quit]" & @CRLF & "-" & $Win1 & @CRLF & "-" & $Win2 & @CRLF & "-" & $Win3 & @CRLF & "-" & $Win4 & @CRLF & "-" & $Win5 & @CRLF & "-" & $Win6)
       sleep(100)
    WEnd
    
    Func myExit()
       msgbox(0,"closing","closing program")
       Exit
    EndFunc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多