利用_Timer_GetIdleTime函数使系统休眠,唤醒后立刻休眠,[已解决]
本帖最后由 fayuOmg 于 2022-2-25 23:52 编辑#include <Timers.au3>
While 1
sleep(1000)
Local$SysIdleTime = _Timer_GetIdleTime()
If $SysIdleTime >= 1000*20 Then
Shutdown(32)
EndIf
WEnd利用_Timer_GetIdleTime函数获取系统空闲时间,并用于系统待机的话,用上面的语句在按电源键恢复系统时,由于If $SysIdleTime >= 1000*20为真,所以会立即又执行shutdown命令。
我写的代码比较复杂,上面只是为说明问题而最简化的部分。
我的解决办法是:见二楼
奇怪啊,这里就是加不了代码,只能放二楼了
在达到设定的超时待机前,先设定一个状态值,达到超时值时,翻转这个值。
这样即使_Timer_GetIdleTime的数值仍然满足条件,但不会触发Shutdown
本帖最后由 fayuOmg 于 2022-2-25 23:53 编辑
#include <Timers.au3>
Local $iShutdownIsReady = 0
While 1
Sleep(1000)
Local$SysIdleTime = _Timer_GetIdleTime()
If $SysIdleTime >= 20000 Then ;达到设定的超时值
If $iShutdownIsReady = 1 Then
$iShutdownIsReady = 0
Shutdown(32)
EndIf
ElseIf $SysIdleTime >= 10000 Then ;达到超时前设置一下中间状态
$iShutdownIsReady = 1
Else
$iShutdownIsReady = 0
EndIf
WEnd
进入待机前显示倒计时msgbox afan 发表于 2022-2-25 13:05
进入待机前显示倒计时msgbox
大部分电脑在下班后都处于屏保状态,锁屏状态下msgbox的倒计时是无效的 你如果要一直循环,在 Shutdown(32) 下面加两行试试
Sleep(10 * 1000)
MouseMove(500, 500)
不循环就加一行 Exit() afan 发表于 2022-2-25 18:12
你如果要一直循环,在 Shutdown(32) 下面加两行试试
Sleep(10 * 1000)
MouseMove(500, 500)
愣是没看懂题意 haijie1223 发表于 2022-2-25 20:15
愣是没看懂题意
老大好,是我题目没说明白。
比如说设定空闲超过20秒后待机,待机后,按电源键恢复系统,在此期间要是没有操作键鼠,那么_Timer_GetIdleTime返回的值就没有被置零,还是超过20秒的那个数值,满足 If $SysIdleTime >= 1000*20 ,就立即又待机了。
问题已经解决,在临近设定的时间前,设置一个状态值,超时后把它翻转就可以了。 afan 发表于 2022-2-25 18:12
你如果要一直循环,在 Shutdown(32) 下面加两行试试
Sleep(10 * 1000)
MouseMove(500, 500)
a版,问题已解决,请关贴
页:
[1]