Msgbox的超时在系统锁屏状态会中止,有没有锁屏下仍能倒计时的方法?
本帖最后由 fayuOmg 于 2022-2-9 21:37 编辑已改用Gui的方式完美解决,此帖封闭。
最近写一个每天自动关机的脚本,关机前弹出提示,用户可以选择延时关机或者当天不关机。
但是如果在弹出提示框时系统处于锁屏状态,那么这个对话框的倒计时就时效了。
第二天上班发现桌面一直有个关机的提示,代码如下:
https://www.autoitx.com/data/attachment/forum/202202/08/114354clphyhtzjehyhe6p.png
Local $sTheDay = @YDAY ;定义日期,隔天的话@HOUR变量恢复为18
Local $sNotDay = @YDAY ;定义日期,用于判断是否取消了当天的关机命令
Local $iTheHour = 18
Local $iTimes2Reg = 1
While 1
If $sTheDay <> @YDAY Then ;日期变更时,恢复为18点弹出关机提示
$iTheHour = 18
$sTheDay = @YDAY
$sNotDay = @YDAY
EndIf
;17点整先弹出一次提示
If @HOUR = 17 And @MIN = 00 and @SEC = 00 Then
Local $iDelayorNot = MsgBox(131075,"自动关机の提醒v2","提示的内容,这里省略" 《xxxx信息通信公司》",1800)
Switch $iDelayorNot
Case 2 ;取消
$sNotDay = $sNotDay + 1
Case 7 ;否
$iTheHour = $iTheHour + 2
EndSwitch
EndIf
;18点整再提示
If @HOUR = $iTheHour And @MIN = 00 and (@SEC = 00 Or @SEC = 01) and $sNotDay = @YDAY Then
Local $iDelayorNot = MsgBox(131075,"自动关机の提醒v2","这里是提示内容,省略 ",600)
Switch $iDelayorNot
Case 2 ;取消
$sNotDay = $sNotDay + 1
Case 7 ;否
$iTheHour = $iTheHour + 2
If $iTheHour>=24 Then $iTheHour = $iTheHour - 24
EndSwitch
EndIf
;15分钟后关机
If @HOUR = $iTheHour And @MIN = 15 and (@SEC = 00 Or @SEC = 01) and $sNotDay = @YDAY Then
Shutdown(5)
EndIf
Sleep(500)
WEnd
对话框界面如下:
自己做个界面当成你的msgbox用啦。一样的。
印象中,以登录用户运行的程序在锁屏后会暂停,直到进入桌面后才会继续运行。以服务的形式运行的话,应该可以在锁屏状态下继续,但是如此问题又来了,若要与用户交互,可能还需要服务创建一个运行在当前桌面窗口站的进程,用来与服务进程进行交互 tubaba 发表于 2022-2-9 10:47
印象中,以登录用户运行的程序在锁屏后会暂停,直到进入桌面后才会继续运行。以服务的形式运行的话,应该可 ...
是的,需要用户确认,就比较麻烦。
我再想,要不要检测是否处于锁屏状态,如果是锁屏就不提示,到时候直接关机 不行吧,一旦锁屏,桌面进程就暂停了,如何检测。分享一大牛用汇编写的 clock,收藏版本 绿色风 发表于 2022-2-8 19:11
自己做个界面当成你的msgbox用啦。一样的。
已改用Gui方式完美解决,谢谢风老大提点。
页:
[1]