[自荐]AutoTipClock,到点自动弹出提醒的时钟

简介

一个能够自动贴边隐藏并在你设置的时间弹出进行提醒的程序。

本程序支持设置多个时间提醒,支持自定义系统快捷键,支持自定义程序显示时间。

(gif见此贴

使用说明

1.本软件自动创建托盘图标,右键托盘图标为关闭软件,左键托盘图标为暂时显示软件并注册快捷键

如果需要更改提醒时间或/与快捷键,需要关闭软件后再次开启软件并在任务栏点击一次左键

2.可以在软件窗口弹出时通过拖动调整位置,在窗口双击右键即可退出程序

3.在ini文件里输入需要自动提醒的时间

注:每行仅1个,为防止软件在遍历比较的瞬间出现卡顿,可以但不建议设置超过12个以上的提醒时间

格式如下

&230254(23时02分54秒,采用24小时制,不允许省略秒,所有个位数需在前方补0)

4.本软件可设置系统快捷键,格式如下:(共两行)

@0/1/2/4(仅输入一个数字,0代表无控制按键,1代表Alt,2代表Ctrl,4代表Shift)

%1~26(代表字母,1代表A,26代表Z

5.请使用以+开头的一个整数来设置显示的秒数,默认为3,格式如下:

+3(代表停留3s,窗口弹出缩回的动画时间未计算在内,请尽量不要让常驻显示的时间超过10s,因其暂未提供手动强制隐藏方式,应该不会有人这么做吧

请勿使窗口弹出与停留时间之和大于提醒的时间间隔,否则将导致程序不能正常提醒甚至崩溃

范例:

1.在4个时间点分别提示
2.设置一个Ctrl+R的快捷键用于临时显示窗口。
3.设置窗口常驻显示时间(窗口出现与消失的时间未计算在内)为3s

&220413
&031600
&000100
&133245

@2

%18

+3

注意

1.本软件是一个简易的免费软件,并遵循MIT协议。

2.为降低系统负载,设置的刷新时间为每1s刷新一次。为尽力保证时间和系统时间相似,软件将在每次符合(hour % 3 == 0)时同步一次。

3.因win限制以及aardio的animate模块并不完美(或者是因为我没搞明白),即便本软件已采用了多线程,亦无法完美解决窗口弹出时,时钟的秒数变化出现卡顿的问题,敬请谅解。

4.因为软件实现逻辑较为粗糙,程序可能需要耗时至多1s(100个提醒时间点以上,不过应该没人这么干吧)以完整地扫描你设置的时间并进行提示。请尽量使你打开软件的时间点与第一次的提醒时间点间隔3s或以上。

写在最后

1发现有人需要于是简单搓了一个,实现很粗暴
2发现很有用,打原神到点了能自动提醒我 :rofl:
3暑假大概会抽空重构一次,争取把透明度自由调整加上
4目前有计划搞一个到点提醒以后执行指定操作的功能(例如运行程序、cmd啥的,不过话说是不是和AutoOff撞了啊喂)
5下载链接如下

代!理?下载

3 Likes

对了,之前还发现个问题忘说了,运行久了之后提示时间会不准(不清楚是不是个例)

然后将75行time_now = time_now.addsecond(1) 改成time_now = time()就好了

再就是直接加上了一个整体透明度mainForm.transparent(99)修改了颜色、换了字体,缺点是文字也透明了

Snipaste_2023-05-31_19-22-07

一开始原代码就是 time_now = time() :joy:
后来发现占用系统资源稍高,有时能达到0.1%,给我吓得直接改掉了,然后就变成了现在这样子,每隔3小时刷新一次系统时间,大幅度减少交互。

刚刚测试了一下,找到了原因,是因为sleep(1000)实际上不能精确且延迟高导致的时间不断减慢。然后我又改回了一开始的反复刷新的版本,结果发现弹出的时候又开始一卡一卡的了,时间无法实时刷新……时间精确和动画流畅二者好像只能取其一……果然还是得暑假用正经语言重构一遍比较好

至于透明度……仍然在想办法实现底色透明文字实体……

其实可以改成在弹出之前10秒才取一次准确时间吧,其他时候都用addsecond。最好的方式应该是用多线程,把时间校准和移框动画分别放在不同的线程里

现在已经是多线程了,3个线程呢…… :smiling_face_with_tear:

第一个线程负责GUI的显示隐藏,系统快捷键注册,程序退出等,是aardio自带的,无需更改
第二个线程负责一开始载入ini配置文件并将相关配置传递给第三线程,同时使第三个线程开始运行
第三个线程负责接收第二个线程传入的数据并获取时间、暂停时间、判断是否弹出等主要设置

现在正在头大要不要把第三个线程再拆分一下

这个能设置每半个小时/一个小时提醒么

能啊,麻烦了点 :joy:
你把每个时间点写一个就好的其实

&000000
&003000
&010000

大概这样子

有趣啊。昨天看到推送的时候就在想是不是aardio写的,今天一看源码果然是。找个时间学习一下代码。
难得碰到一样用aardio的人,有机会可以交流一下。

这也太麻烦了吧 :joy:

其实如果只是倒计时的话你可以用另一个大佬开发的软件的 :joy:

这些功能有计划开发,等考完试暑假里面会用正经的语言全部重构一遍顺便加上新功能

好啊好啊,用aar的确实少,网上的相关讨论也很少见……

另外我刚才粗略看了一下源码,你时间的显示方式用的是static控件?
我觉得plus控件可能更好用,所以我打算仿写一个,看看效果如何。

我也想改plus控件来着,不过发现很多属性得重新写一遍,各种多线程传参要命就没管

还有,大哥你要是有能力就帮忙改改多线程吧 :melting_face: 尤其是看看能不能在多线程内指定快捷键,不要让用户手动去点右下角的任务栏图标……我一直在寻找方法,一直以来每次都是传参阻碍了我……
目前已经放弃了这个东西,暑假看看重构一遍算了 :man_facepalming:

如果不去做窗口的滑动动画,是否就不需要多线程了?
目前我拿plus控件已经做了一个时钟出来,还没加上定时弹出的功能,但是应该快了。暂时没发现哪里需要多线程 :joy:
screenshots

大神,请问有什么办法把时间和冒号都改为白色呢?

你好,软件的内部颜色需要手动更改代码实现,因过于麻烦,暂时未提供相关借口与设置,现给你手动编译了一个版本。

请查看邮箱附件。