Skip to content

v1.0.6 — 切换条不再滞留、最小化窗口也有缩略图、末行居中

Choose a tag to compare

@informalgit informalgit released this 08 Sep 03:23
· 3 commits to main since this release

修复

  • 切换条不再滞留AttachThreadInput 是同步跨线程调用,要等对方线程处理,而 Explorer 的窗口线程正是可能忙几百毫秒的那种;浮层又是在激活完成之后才隐藏的 —— 这就是"从文件资源管理器切出时切换条挂一下、快速来回切换更明显"的原因。
    现在快路径完全不 attach(F24 输入声明已经足够授权 SetForegroundWindow);只有快路径失败才进慢路径,且进入慢路径前先把浮层收掉,并限时 3 次 / 200 ms。
  • 顺带修掉一个回弹 bug:旧的重试循环在 BringWindowToTop 一次就成功时会误判为失败,进而把前台还给源窗口(就是"To Do 又跑回前面"那类现象)。
  • 最小化窗口也有缩略图。实测 DWM 对最小化窗口照常提供缩略图,保留的正是最后一次呈现的画面(报的是还原尺寸)。之前代码主动跳过了最小化窗口,而这台机器大半窗口是最小化的,所以满屏空白格。现在只跳过 cloaked(其他虚拟桌面 / 应用自行隐藏),源尺寸退化时也不再拉伸出一整块空白。
  • 看门狗 100 ms → 30 ms(Alt 抬起到浮层消失的最坏延迟);浮层窗口加 SWP_NOACTIVATE,永不抢前台。

改进

  • 换行改为「填满一行再换行」,并且每一行居中:短的最后一行居中摆放,不再出现右侧一整片空白。
  • 切换条开着时关掉窗口会实时重排:按 exe 键归并,幸存条目保持原来的位置,重新布局 / 重注册缩略图 / 重绘;没有任何窗口可切换时静默结束会话。
  • 打开切换条更快:图标按 exe 缓存(原来是每条目最多两次 WM_GETICON,每次带 100 ms 超时跨进程往返),exe 路径在同一次枚举内记忆化。

说明

  • 本版本同时包含 v1.0.5(此前只推了 tag、没发 release)的内容:带 WS_EX_APPWINDOW 的窗口(资源管理器属性 / 另存为 / 偏好设置对话框等)在切换条中独立成条,不再被所属 exe 的条目吞并 —— 否则这类对话框永远切不过去。
  • 构建:双击 build.bat(用 .NET Framework 的 csc)。旧进程提权后 taskkill 杀不动,先托盘退出再编译。