Skip to content

v0.4.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 12 Nov 00:45
· 6 commits to main since this release

DeepSleep For Windows(Beta) 0.4.2

修托盘图标不出现。

消失的图标

用的是第三方托盘库,它调用 Windows 加图标的接口之后不看返回值。那个接口返回 0 表示没加上——托盘区还没建好、或者资源管理器重启过——库既不报错也不重试。于是程序在跑、日志在写,图标就是没有。

两种情况必中:

  • 开机自动启动的任务比资源管理器画出托盘区更早。每次登录都赌一次,输一次这次开机就没图标。
  • 资源管理器重启(崩了,或者你手动重启它)。托盘区里的图标全部被销毁,不主动往回加的程序再也回不来。

现在做法:

  • 加图标之前先等托盘区存在,最多等 60 秒。等不到也照常启动,只是记一条日志。
  • 图标加上之后一直盯着。托盘区消失再出现,就把图标删掉重新加一遍。
  • 顺带修了托盘心跳只在启动时写一次的问题。以前图标明明在,20 秒后所有问「托盘在不在」的地方都会答不在,窗口里显示的状态是错的。

新增:doctor 会告诉你托盘任务在不在

以前 doctor 只报后台服务和代理的状态,不问托盘。于是「图标没出现」和「托盘任务根本没装上」看起来一模一样。

现在多两行:

  tray task:   True
  tray alive:  False

tray task 是任务有没有注册,tray alive 是托盘进程最近 20 秒内有没有写心跳。

如果还是没有图标

Windows 11 默认把新出现的托盘图标收进任务栏右边的小箭头里。先点开那个箭头找一下。

还是找不到,把 %ProgramData%\DeepSleepForWindows\ 或 %LOCALAPPDATA%\DeepSleepForWindows\ 下面的日志发出来,里面有「托盘区等到了没有」和「图标加了几次」的记录。

说明

这个版本只改了 Windows 专用的那段代码,写完没有在真机上验证过。判断依据是那个库的源码里确实不看返回值、以及设置可见性会短路,但没在 Windows 上跑过。有问题继续报。