fayuOmg 发表于 2022-2-8 11:43:15

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



对话框界面如下:

fayuOmg 发表于 2022-2-8 11:44:00


绿色风 发表于 2022-2-8 19:11:15

自己做个界面当成你的msgbox用啦。一样的。

tubaba 发表于 2022-2-9 10:47:58

印象中,以登录用户运行的程序在锁屏后会暂停,直到进入桌面后才会继续运行。以服务的形式运行的话,应该可以在锁屏状态下继续,但是如此问题又来了,若要与用户交互,可能还需要服务创建一个运行在当前桌面窗口站的进程,用来与服务进程进行交互

fayuOmg 发表于 2022-2-9 10:59:11

tubaba 发表于 2022-2-9 10:47
印象中,以登录用户运行的程序在锁屏后会暂停,直到进入桌面后才会继续运行。以服务的形式运行的话,应该可 ...

是的,需要用户确认,就比较麻烦。

我再想,要不要检测是否处于锁屏状态,如果是锁屏就不提示,到时候直接关机

tubaba 发表于 2022-2-9 11:25:05

不行吧,一旦锁屏,桌面进程就暂停了,如何检测。分享一大牛用汇编写的 clock,收藏版本

fayuOmg 发表于 2022-2-9 21:35:13

绿色风 发表于 2022-2-8 19:11
自己做个界面当成你的msgbox用啦。一样的。

已改用Gui方式完美解决,谢谢风老大提点。
页: [1]
查看完整版本: Msgbox的超时在系统锁屏状态会中止,有没有锁屏下仍能倒计时的方法?