CCR
1
简介
一个能够自动贴边隐藏并在你设置的时间弹出进行提醒的程序。
本程序支持设置多个时间提醒,支持自定义系统快捷键,支持自定义程序显示时间。
(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发现很有用,打原神到点了能自动提醒我 
3暑假大概会抽空重构一次,争取把透明度自由调整加上
4目前有计划搞一个到点提醒以后执行指定操作的功能(例如运行程序、cmd啥的,不过话说是不是和AutoOff撞了啊喂)
5下载链接如下
3 个赞
Y_z
(Y_z)
2
对了,之前还发现个问题忘说了,运行久了之后提示时间会不准(不清楚是不是个例)
然后将75行time_now = time_now.addsecond(1)
改成time_now = time()
就好了
再就是直接加上了一个整体透明度mainForm.transparent(99)
修改了颜色、换了字体,缺点是文字也透明了
CCR
3
一开始原代码就是 time_now = time()

后来发现占用系统资源稍高,有时能达到0.1%,给我吓得直接改掉了,然后就变成了现在这样子,每隔3小时刷新一次系统时间,大幅度减少交互。
刚刚测试了一下,找到了原因,是因为sleep(1000)实际上不能精确且延迟高导致的时间不断减慢。然后我又改回了一开始的反复刷新的版本,结果发现弹出的时候又开始一卡一卡的了,时间无法实时刷新……时间精确和动画流畅二者好像只能取其一……果然还是得暑假用正经语言重构一遍比较好
至于透明度……仍然在想办法实现底色透明文字实体……
其实可以改成在弹出之前10秒才取一次准确时间吧,其他时候都用addsecond。最好的方式应该是用多线程,把时间校准和移框动画分别放在不同的线程里
CCR
5
现在已经是多线程了,3个线程呢…… 
第一个线程负责GUI的显示隐藏,系统快捷键注册,程序退出等,是aardio自带的,无需更改
第二个线程负责一开始载入ini配置文件并将相关配置传递给第三线程,同时使第三个线程开始运行
第三个线程负责接收第二个线程传入的数据并获取时间、暂停时间、判断是否弹出等主要设置
现在正在头大要不要把第三个线程再拆分一下
Xenon
8
有趣啊。昨天看到推送的时候就在想是不是aardio写的,今天一看源码果然是。找个时间学习一下代码。
难得碰到一样用aardio的人,有机会可以交流一下。
CCR
10
其实如果只是倒计时的话你可以用另一个大佬开发的软件的 
这些功能有计划开发,等考完试暑假里面会用正经的语言全部重构一遍顺便加上新功能
CCR
11
好啊好啊,用aar的确实少,网上的相关讨论也很少见……
Xenon
12
另外我刚才粗略看了一下源码,你时间的显示方式用的是static控件?
我觉得plus控件可能更好用,所以我打算仿写一个,看看效果如何。
CCR
13
我也想改plus控件来着,不过发现很多属性得重新写一遍,各种多线程传参要命就没管
还有,大哥你要是有能力就帮忙改改多线程吧
尤其是看看能不能在多线程内指定快捷键,不要让用户手动去点右下角的任务栏图标……我一直在寻找方法,一直以来每次都是传参阻碍了我……
目前已经放弃了这个东西,暑假看看重构一遍算了 
Xenon
14
如果不去做窗口的滑动动画,是否就不需要多线程了?
目前我拿plus控件已经做了一个时钟出来,还没加上定时弹出的功能,但是应该快了。暂时没发现哪里需要多线程 

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