pyautogui防止屏幕息屏问题
pyautogui可以控制鼠标移动,希望可以通过设置每1分钟移动一下鼠标,防止屏幕锁屏但实际操作下来,通过使用pyautogui.move()函数,可以实现鼠标移动,但是屏幕到时间了依然会锁屏!
求助!如何操作可以实现防止息屏? 自动按键应该可以阻止锁屏。 hrpzcf 发表于 2022-5-11 23:31
自动按键应该可以阻止锁屏。
pyautogui.press()可以的 hrpzcf 发表于 2022-5-11 23:31
自动按键应该可以阻止锁屏。
pyautogui.press()可以的,但主要是按键害怕影响程序运行,所以我先尝试了直接手动移动鼠标,是可以避免息屏的,但用pyautogui移动鼠标指针时,到时间了还是息屏,感觉两个不应该时一样的吗?
本帖最后由 hrpzcf 于 2022-5-12 02:45 编辑
流浪诗人12345 发表于 2022-5-12 00:13
pyautogui.press()可以的,但主要是按键害怕影响程序运行,所以我先尝试了直接手动移动鼠标,是可以避免 ...
那就调用系统 API,只要这个脚本不结束,系统就不会息屏和睡眠(除非被别的程序动了睡眠策略)。
time.sleep() 时间可以设置的长些,比你设置的息屏时间或者睡眠时间(两者中最小者)短几分钟就行。
import time
from ctypes import windll, c_uint
KERNEL = windll.kernel32
KERNEL.SetThreadExecutionState.restype = c_uint
KERNEL.SetThreadExecutionState.argtypes = (c_uint,)
RESTORE = 0x80000000
PREVENT = 0x00000001 | 0x00000002 | 0x80000000
def alive():
"""阻止系统息屏和睡眠"""
return hex(KERNEL.SetThreadExecutionState(PREVENT))
def restore():
"""恢复息屏和睡眠策略"""
return hex(KERNEL.SetThreadExecutionState(RESTORE))
# 调用 alive 阻止息屏睡眠,调用 restore 恢复
# 本脚本运行后,在此脚本的控制台可以 Ctrl + C 结束运行
try:
print("开启状态:", alive())
start = time.time()
while True:
now = time.time()
print(f"经历时长:{now - start:.0f}")
time.sleep(1)
except KeyboardInterrupt:
print("已手动恢复息屏及睡眠。")
finally:
print("恢复状态:", restore())
hrpzcf 发表于 2022-5-12 02:35
那就调用系统 API,只要这个脚本不结束,系统就不会息屏和睡眠(除非被别的程序动了睡眠策略)。
time ...
感谢大佬! 流浪诗人12345 发表于 2022-5-12 10:40
感谢大佬!
不客气,昨晚太困了写的是蒙圈版(虽然也能达到效果)
这个是修正版,别的程序作妖把息屏睡眠恢复默认了也不会息屏。
import time
from ctypes import windll, c_uint
KERNEL = windll.kernel32
KERNEL.SetThreadExecutionState.restype = c_uint
KERNEL.SetThreadExecutionState.argtypes = (c_uint,)
RESTORE = 0x80000000
PREVENT = 0x00000001 | 0x00000002 | 0x80000000
def alive():
"""阻止系统息屏和睡眠"""
return hex(KERNEL.SetThreadExecutionState(PREVENT))
def restore():
"""恢复息屏和睡眠策略"""
return hex(KERNEL.SetThreadExecutionState(RESTORE))
# 调用 alive 阻止息屏睡眠,调用 restore 恢复
# 本脚本运行后,在此脚本的控制台可以 Ctrl + C 结束运行
try:
while True:
print("开启状态:", alive())
# 如果系统设置的息屏或睡眠时间是10分钟(600秒),那这里就设置大概500秒左右
time.sleep(500)
except KeyboardInterrupt:
print("已手动恢复息屏及睡眠。")
finally:
print("恢复状态:", restore())
页:
[1]