【问题标题】:killing all non-responding applications with autoit使用 autoit 杀死所有无响应的应用程序
【发布时间】:2014-02-27 05:43:57
【问题描述】:

如何在windows下自动关闭autoit没有响应的应用程序?这些类型的应用程序通常获得“XXXX(未响应)”形式的标题。我尝试了以下代码,但没有任何成功:

; Wait 10 seconds for the a window to appear.
Local $hWnd = WinWait("Not Responding", "", 10)

; Wait for 2 seconds before calling the WinKill function.
Sleep(2000)

; Kill the window using the handle returned by WinWait.
WinKill($hWnd, "")

【问题讨论】:

  • 我假设上述代码在到达无响应窗口后执行。您能否进一步解释一下执行上述代码时出了什么问题?
  • 好吧,第一行没有命中。我想脚本仍在等待“无响应”应用程序启动

标签: windows autoit kill-process


【解决方案1】:

使用它进行测试。 (需要把它放在一个循环中,如果你想每 x 秒检查一次)

Opt('WinTitleMatchMode', 2)
Opt('WinSearchChildren', 1)

Local $var = WinList()
Local $s_PID_Buffer
For $i = 2 To $var[0][0]
    If BitAND(WinGetState($var[$i][1]), 2) Then
        ; is visible
        If Not StringInStr($s_PID_Buffer, ";" & WinGetProcess($var[$i][1]) & ";") Then
            ; show PID only once
            $s_PID_Buffer &= ";" & WinGetProcess($var[$i][1]) & ";"
            ConsoleWrite($i & @TAB & "Title=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1] & @CRLF & "PID: " & WinGetProcess($var[$i][1]) & @CRLF & @CRLF)
            If  StringInStr($var[$i][0], 'Not Responding') Then
                ProcessClose(WinGetProcess($var[$i][1]))
                WinKill($var[$i][1])
            EndIf
        EndIf
    EndIf
Next

【讨论】:

  • 我觉得答案很有见地。在我的 Windows 7 机器上(我想)ProcessClose 残酷地试图关闭死进程。然后监视器闪烁几次,没有响应的窗口真的挂起(甚至 AutoIt Window Info 确实提供了信息),尽管该过程仍在任务菜单中。积极的一面是我真的有一个可以尝试杀死的被挂起的应用程序:)
【解决方案2】:

您的代码很好,您只需要设置 WinTitleMatchMode 以匹配标题子字符串。

Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase

; Wait 10 seconds for the a window to appear.
Local $hWnd = WinWait("Not Responding", "", 10)

; Wait for 2 seconds before calling the WinKill function.
Sleep(2000)

; Kill the window using the handle returned by WinWait.
WinKill($hWnd, "")

【讨论】:

  • 确认命中。杀死无响应窗口的简单强大解决方案:)
  • 你应该在再次调用 Kill 之前检查一下,标题中是否仍然有“Not Responding”……同时它可能又变得有响应了……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
相关资源
最近更新 更多