Autohotkey 在使用WinClose之前是否应该检查窗口是否存在?

Autohotkey 在使用WinClose之前是否应该检查窗口是否存在?,autohotkey,sanity-check,Autohotkey,Sanity Check,的文档包括一个代码示例,该示例在尝试关闭前检查 IfWinExist, Untitled - Notepad ; check if window exists WinClose ; close window found above 我还看到脚本在不检查窗口是否存在的情况下单独使用WinClose WinClose, Untitled - Notepad ; close window without checking if it exists

的文档包括一个代码示例,该示例在尝试关闭前检查

IfWinExist, Untitled - Notepad  ; check if window exists
    WinClose                    ; close window found above
我还看到脚本在不检查窗口是否存在的情况下单独使用WinClose

WinClose, Untitled - Notepad    ; close window without checking if it exists
我找不到任何理由使用一种方法而不是另一种。我的剧本似乎无论哪种方式都很好,这使得选择看起来像是个人偏好


在使用WinClose关闭窗口之前,是否有任何理由检查窗口是否存在?

否,关闭窗口之前不需要检查窗口是否存在。如果不存在匹配窗口,
WinClose
将什么也不做。这不是这个例子想要说的

该示例试图说明,在使用
WinClose
时,不需要重复目标窗口的WinTitle和/或WinText。在某些情况下,它只会为您节省一些打字(和性能)。
例如:

IfWinExist, Untitled - Notepad
    ;do stuff
    ;do more stuff
    ;etc
    WinClose ;close the window found above
这在
WinTitle
文档中的段落“最后找到的”窗口中解释:

这是IfWin[Not]Exist、WinExist()、IfWin[Not]Active、WinActive()、WinWait[Not]Active或WinWait最近发现的窗口它可以使脚本更容易创建和维护,因为目标窗口的WinTitle和WinText不需要为每个窗口命令重复此外,脚本执行得更好,因为它们不需要在第一次找到目标窗口后再次搜索它


好吧,如果WinExist只检查窗口是否正在运行,我认为它不会将焦点放在该窗口上。因此,如果您关注窗口A,检查窗口B,然后发出关闭命令,我认为您将关闭窗口A而不是窗口B。@RobertIlbrink它将关闭上次找到的
窗口,即@Dennies_e在其回答中解释的窗口B。如果排除IfWinExist,脚本的性能会更好吗?(因为也只有一个查找)可能没有可测量的差异。只有一个查找,但您仍在执行两个命令,而不是一个。我会选择读得最好的。