# DetectHiddenWindows

设置脚本是否可以 "看见" 隐藏的窗口.

    DetectHiddenWindows Mode

## 参数

Mode

  类型: 整数(布尔值)

  `1` 或 `True`: 能检测到隐藏窗口.

  `0` 或 `False`: 这是默认的. 除了 WinShow 函数, 其他函数都不会检测隐藏窗口.

## 备注

在某些情况下, 打开 DetectHiddenWindows 可能会使脚本编写变得困难, 因为有些隐藏的系统窗口可能意外地匹配上您想要操作的另一个窗口的标题或文本. 因此在大多数脚本中应该让此设置保持关闭. 然而, 当您希望直接操作隐藏窗口而不想首先使用 WinShow 显示这些窗口时, 则需要打开此设置.

除 WinShow 外的所有窗口函数都会受此设置的影响, 包括 WinActivate, WinActive, WinWait 和 WinExist. 与之相比, 即使没有检测隐藏窗口, WinShow 始终能显示隐藏窗口.

在以下情况下, 不需要开启 DetectHiddenWindows:

- 当使用一个纯粹的 HWND 时, 如 `WinShow(A_ScriptHwnd)`.
- 当使用一个带有 Hwnd 属性的对象(如 Gui) 时, 如 `WinMoveTop(myGui)`.
- 当通过 ahk_id 方法 或作为最后一个窗口访问控件或子窗口时.
- 当通过 +LastFound 选项访问 GUI 窗口时.

通过 ahk_id 方法或作为最后找到的窗口访问控件或子窗口时, 无需打开 DetectHiddenWindows. 通过 +LastFound 选项访问 GUI 窗口时, 同样是不需要的.

Cloaked(非显示) 窗口被视为隐藏的. 在 Windows 8 中引入的 Cloaked 窗口是指处于非活动状态的虚拟桌面或 UWP 应用程序的窗口, 这些窗口被挂起是为了提高性能, 或更确切地说是减少内存消耗. 在 Windows 10 中, 这些进程在任务管理器中以绿色的叶子指示. 此类窗口在视图中是隐藏的, 但是可能仍具有 WS_VISIBLE 窗口样式.

内置变量 A_DetectHiddenWindows 包含了当前设置(1 或 0).

每个新运行的线程(如 热键, 自定义菜单项或定时子程序) 都会以此函数的默认设置开始. 这个默认设置可以通过在脚本启动中使用此函数来改变.

## 相关

DetectHiddenText

## 示例

打开检测隐藏窗口.

    DetectHiddenWindows True

dftg