Repository navigation
这一版做了三件事:给程序一个能看懂的入口,让边框自己从坏状态里爬出来,再把几个真问题修掉。
左键单击托盘图标 = 主面板
右键菜单对会用的人够快,对第一次见它的人不行:四个功能叫什么、各自干什么、怎么用、现在开着没开,全藏在三层子菜单里,而菜单装不下任何一句说明。
现在左键单击托盘图标打开一个面板(菜单最上面也多了「面板...」):
- 四个功能各一块:名字 + 一个勾(当场开关,面板不关)+ 一句「这是什么」+ 一句「怎么用」+「设置...」「排除应用...」;
- 「置顶刚才那个窗口「<标题>」」——按钮上直接写着是哪个窗口,已经钉住时变成「取消置顶」,旁边是准星;
- 「开机时自动启动」勾,以及 配置文件 / 创建桌面快捷方式 / 剪贴板守护 / 诊断报告 / 安装到系统(或卸载)/ 关于 / 退出。
边框:三个真问题
点一下任务栏,所有窗口的边框都变成「非活动」色。 活动窗口跟着系统的前台事件走,而任务栏、托盘、开始菜单、以及 WindowMark 自己的面板和设置窗口拿到前台时照样会报这条事件——它们都不在跟踪列表里,于是没有任何一个窗口匹配得上「活动」。现在「活动」指的是用户最后在用的那个窗口:前台落到跟踪不到的窗口上时不认。
很多窗口干脆没有边框。 边框画布是一张盖满整屏的分层窗口,挂在置顶层末尾。它被挤到普通窗口下面去了(远程桌面会话里见过)——位还在、位置没了,画出来的每一笔都被上面的窗口盖住。现在每 500ms 自查一次,沉下去就自己提回置顶层;看门狗那一问也查一遍(桌面静着的时候不会有重画)。
打字时输入法候选框一出来,那一块的边框就没了。 置顶窗口被当成了「矩形遮挡物」。可画布就挂在置顶层末尾,别人家的置顶窗口统统在它上面,系统合成本来就会按那个窗口实际画出来的像素盖住边框;再拿矩形裁一遍,等于把它没画的地方也抹掉。输入法候选框正是矩形不小、真正画出来只有一条的那种窗口。
看门狗:卡住了自己恢复
有一类故障从外面看都一样:窗口变了,程序毫无反应,重启才好。成因不止一个——Windows 会把回调太慢的钩子摘掉(摘掉不通知任何人),explorer 重启或会话切换之后事件流可能断掉,边框也可能因为会话锁定挂起而再没收到解除挂起的那条事件。
现在每 5 秒自己对一次账:系统上真实存在的窗口和它记着的那份比一遍,连续两次对不上就重新订阅事件并整份重新播种;边框如果还挂着而桌面已经回来了,就自己解除挂起重画。这类情况通常不用再重启——最多 10 秒自己好。
一个 exe 就是完整的绿色版
发布页上除了 zip,还有一个 WindowMark-v0.6.0-portable.exe:单独一个文件,不用解压、不用配套文件,双击就用,设置写在它旁边,删掉它就干净。
双击一个和正在运行的那份不是同一个文件的 exe 时会问一句「要换成这一份吗」——没有这一下,拿到新版双击只会弹「已在运行」然后退出。同一个文件再双击不问,开机自启那次也不问。
诊断
- 四部分(边框、书签、置顶、拖动)现在认同一个开关:配置文件旁边建一个空文件
diag.on,日志写进同一个diag.log。以前书签那套只认环境变量,等于只在开发机上存在。 - 位置跟着配置文件走:绿色版就在 exe 旁边,整个文件夹仍然自带一切。
- 顺手修了一件事:z 序诊断自己太贵(每次都把窗口链从头走到尾再写一行),6.7ms 一次,报出来的数字是诊断自己的。改成按种类计数后,书签 Apply 从 6200–7000µs 降到 164–257µs。
其他
- 设置页「颜色」下面,非活动窗口那一排色卡换成了同色相的减弱版——以前两排一模一样,挑同一格得到的是一模一样的边框,而这个功能的全部意义就是一眼看出哪个窗口是活动的。
- 拖动窗口时书签条跟手(走和边框同一条不节流的几何快路径)。
- 「书签」统一叫「窗口书签」。
- 关于框最下面多了一行「觉得不错?赞赏一下作者~」,点了才弹收款码,不点就当没有。
已有的 settings.conf 不会被改写,升级安装照常保留设置。