# 窗口秒切换 · 使用边界

本文档说明「窗口秒切换」能做什么、不能做什么，以及在哪些情况下不应该使用它。
文档只描述边界，不改变程序行为。程序本身的约束以首次启动的《使用须知》为准。

---

## 一、它到底是什么

它只改窗口的**显示状态**，不碰窗口里运行的任何东西。按下快捷键时，它对每个目标窗口做三件事：

1. 清除 `WS_VISIBLE` 样式位 —— DWM 不再为它出帧，屏幕上没有像素；
2. 修改扩展样式（加 `WS_EX_TOOLWINDOW`、去掉 `WS_EX_APPWINDOW`）并调用 `ITaskbarList::DeleteTab` —— 任务栏按钮和 Alt+Tab 条目消失；
3. 把原始的扩展样式、窗口句柄、所属进程号写入状态文件 —— 用于原样还原。

它**不做**的三件事同样是定义的一部分：

- 不结束、不暂停任何进程；
- 不拦截、不修改任何网络流量；
- 不读取、不删除任何日志或记录。

一句话：它是显示层的一块窗帘，不是隐身衣。

---

## 二、技术边界：它挡不住谁

| 层面                   | 藏起之后                                  | 谁能发现                                |
| -------------------- | ------------------------------------- | ----------------------------------- |
| 屏幕合成                 | 不再出帧                                  | 屏幕上确实看不到                            |
| 任务栏 / Alt+Tab        | 条目消失                                  | 只瞒过普通使用者                            |
| 窗口枚举 (`EnumWindows`) | 窗口仍然存在，只是标志位变了                        | 任意程序都能列出并重新显示它                      |
| 系统事件                 | 隐藏瞬间广播 `EVENT_OBJECT_HIDE`            | 任何设置了全局事件监听的程序立刻收到                  |
| 内容读取                 | 窗口仍可被 `PrintWindow` / `WM_PRINT` 画到内存 | 不需要让窗口可见就能取到画面                      |
| 进程 / 网络 / 日志         | 完全不变                                  | 任务管理器、EDR、SRUM、Prefetch、事件日志 4688 等 |

由此可得一条硬结论：

> **凡是需要「不让别人知道我做过什么」的场合，这个工具都不适用，而且它本来也做不到。**

任何把它当作"规避监管手段"的预期，都建立在错误的技术前提上。

---

## 三、允许的用途

判断合法性的关键不在"藏"这个动作，而在目的与可恢复性。以下用途都是"收起一组窗口、稍后原样放回"。

### 1. 屏幕共享与远程会议

共享整个屏幕前，把聊天、邮件、私人相册、无关的内部文档成组收起；会议结束一键恢复，焦点和窗口位置不变。
合格的用法：收起的是**自己的**窗口，且收起后不影响会议本身要展示的内容。

### 2. 录屏、直播、课程录制

需要画面干净但不想真的关掉参考文档、素材窗口、时间轴。收起 → 讲完 → 恢复，不用重新摆一遍窗口。

### 3. 深度工作、降低视觉噪音

把参考资料、监控面板、聊天窗口成组收走，只留当前任务；需要查资料时一键全部回来。
合格的用法：收起的是干扰项，结果是自己更专注，而不是让别人误判你在做什么。

### 4. 学习与自学

上网课、看录播时把社交软件和娱乐窗口整组收起，只留课堂和笔记；下课一键恢复。写作业、查资料时把参考网页、PDF、词典收成一组，在"写作"和"查找"之间来回切换，不必关掉任何一个。宿舍、图书馆、公共机房里有人靠近时，收起成绩单、申请材料、私人聊天。
合格的用法：收起的是干扰项或私人内容，不隐藏任何正在被检查、被考核的东西。

### 5. 多上下文并行

前台开发 + 后台日志 / 告警 / 监控面板，两套窗口属于两条思路。一键换台而非关闭，滚动位置、运行状态、未保存编辑都保留。

### 6. 临时遮挡私人信息

有人临时走到工位旁问一句话。锁屏太重（要输密码、还会遮住正在跑的任务），而工资单、体检报告、私人聊天不需要被看见。说完一键恢复。

### 7. 演示、培训、测评环境

讲师端收起答案窗口或备选方案，演示完放回；机房、测评机、数字标牌做统一的窗口编排。

### 8. 安全与合规培训

作为**反面教材**使用：现场演示"窗口看不见 ≠ 行为看不见"，配合窗口枚举、全局事件监听、事件日志回放，讲清可见性只是表面。

### 9. 小屏、远程桌面、演示机运维

分辨率吃紧时腾出整块屏幕；kiosk 场景下做临时窗口编排。

---

## 四、不允许的用途

以下用途即使技术上做得到，也属于越界。它们共同的特征是：**依赖他人的错误判断才能成立。**

- 隐藏违法违规内容，包括但不限于赌博、诈骗、盗版分发、违规交易的沟通窗口；
- 规避单位监管、审计、考勤、工时统计或设备管理；
- 在考试、测评、竞赛、开卷考核中，隐藏被禁止使用的资料、通讯工具或答案；
- 在在线监考、课堂巡查、机房管理中，让监考教师或管理员看不到真实屏幕内容；
- 在机房、图书馆等学校统一管理的设备上，绕过设备管理、还原或监控策略；
- 在他人不知情、未同意的情况下，于他人设备上隐藏窗口（含远程协助、代操作场景）；
- 掩盖正在进行的违规行为，例如外传资料、私接业务、私自安装软件；
- 使监护人、管理者、审计方对设备状态形成错误判断；
- 修改程序名称、图标或界面，或把它嵌入其他程序，以逃避检测或误导他人；
- 以"整理桌面"为名，实际用于上述任一目的。

---

## 五、灰区判断：三个问题

遇到没有明确结论的场景，依次问自己：

1. **恢复窗口的那一刻，我能否坦然向在场所有人解释？**
2. **我是否正在让某个有权知情的人形成错误判断？**
3. **如果这台机器属于公司、学校或他人，我是否有权这样做？**

任一问题的答案为「否」，就不要做。

---

## 六、灰区案例

| 场景                  | 结论          | 理由                       |
| ------------------- | ----------- | ------------------------ |
| 开会共享屏幕前收起私人聊天       | 可以          | 保护自己的隐私，且会前已说明           |
| 演示时收起无关的后台报表        | 可以          | 减少干扰，恢复后不影响任何人           |
| 有人到工位旁时收起工资单        | 可以          | 目的正当、时长短、且会恢复            |
| 上班/学习 时间收起游戏窗口以免被看到 | ==**不可以**== | 目的是规避管理，游戏本身即违反 工作/学习 纪律 |
| 收起公司监控 / 审计客户端      | ==**不可以**== | 直接对抗单位监管                 |
| 在同事电脑上"帮忙"藏窗口       | ==**不可以**== | 未经设备主人同意                 |
| 讲师收起答案页，讲完放回        | 可以          | 教学需要，且对学员公开              |
| 考试时在自己的机器上藏复习资料     | ==**不可以**== | 使监考方形成错误判断               |
| 上网课时收起社交软件和娱乐窗口     | 可以          | 减少干扰，不影响课堂               |
| 自习时把资料和题库分成两组切换     | 可以          | 提高效率，恢复后原样               |
| 宿舍里有人靠近时收起成绩单       | 可以          | 保护个人隐私                   |
| 开卷考试中收起与考试无关的窗口     | 可以          | 未隐藏任何被禁止的内容              |
| 在线考试中让监考看不到部分窗口     | ==**不可以**== | 使监考方形成错误判断               |
| 机房公用电脑上藏窗口躲避巡查      | ==**不可以**== | 设备非自己所有，目的为规避管理          |
| 培训中演示"隐藏不等于安全"      | 可以          | 用于揭示风险，而非掩盖行为            |
| 收拾桌面、临时清爽一下         | 可以          | 这是最普通的用法，前提是不涉及上述目的      |

---

## 七、责任

- 程序不做身份校验，也不判断使用者意图，因此无法在技术上区分合法与越界使用。
- 首次启动时必须选择「同意并继续」；选择「拒绝并退出」或直接关闭窗口，程序不运行。
- 使用者对自己的使用方式负全部责任。因越界使用产生的纪律、法律或其他后果，由使用者自负。
- 所在单位或学校的规章制度、保密协议、设备使用政策、考场纪律优先于本文档；两者冲突时以更严格者为准。

---

## 八、与其他文档的关系

- 程序内《使用须知》：入口处的简短提示，只说明"不得用于违法违规、违反纪律或掩盖不当行为"。
- 本文档：上述提示的完整展开，供分发、培训、审计说明时使用。
- 修改本文档不需要重新编译程序；修改《使用须知》文案才需要改动源码并重新构建。
