我正在构建一个程序,使用 AutoIT 和我在这里找到的代码在 60 秒没有鼠标移动后关闭所有打开的窗口: https://www.autoitscript.com/forum/topic/97638-closing-all-open-windows/
我对其进行了一点编辑,使其看起来像这样:
#include <MsgBoxConstants.au3>
Opt("WinTitleMatchMode", 3) ;3 = exact title match
Opt("TrayIconDebug", 1)
$S_running = "check-4-app2" ;name the script
If WinExists($S_running) Then Exit
AutoItWinSetTitle($S_running)
$count = 0
$mousePos = MouseGetPos()
while 1
$count += 1
$mousePosNow = mouseGetPos()
If $mousePosNow[0] <> $mousePos[0] Or $mousePosNow[1] <> $mousePos[1] Then $count = 0
$mousePos = MouseGetPos()
;ToolTip("count = " & $count, 0, 0)
If $count > 60 Then
$count = 0
$var = WinList ()
$length = UBound($var) - 2
For $i = 1 to $length
If BitAnd (WinGetState ($var[$i][1]), 2) And $var[$i][0] <> "" AND $var[$i][0] <> "Program Manager" Then WinClose ($var[$i][1], "")
Next
EndIf
Sleep(1000)
WEnd
它实际上会在 60 秒后关闭所有打开的窗口,但它也会在 Windows 7 中打开窗口关闭窗口(例如当您按 alt+f4 组合时)。
如何阻止此窗口弹出?我只是喜欢关闭所有窗口并拥有干净的桌面视图。
首先你应该对 $var=WinList() 中的所有值进行一些调试,看看你的操作系统中的某个窗口是否特殊,这意味着,如果这样的窗口关闭,它会触发窗口关闭,如果问题仍然存在,我找到了一个巡回的方法,我尝试在我的电脑中做以下代码
WinClose("Close Windows")
; or maybe WinClose("Shutdown Windows")
要关闭您所说的"Windows关闭窗口",也许您可以将此行放在代码的底部
注意:在我的电脑中,它的操作系统语言不是英语,所以也许你应该首先触发"Windows关机窗口"并使用AutoIt窗口信息工具精确地查看其窗口标题