【发布时间】:2022-08-09 22:18:48
【问题描述】:
直接进入问题,我试图在我的主程序中实现屏幕/显示/监视器关闭和打开功能。我研究了一下,发现this one answer 很有趣。所以,尝试测试它。简而言之,代码如下:
import time
import win32gui
import win32con
def ScreenOFF():
\"\"\"
Function to turn off the screen.
\"\"\"
return win32gui.SendMessage(win32con.HWND_BROADCAST,
win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 2)
def ScreenON():
\"\"\"
Function to turn on the screen.
\"\"\"
return win32gui.SendMessage(win32con.HWND_BROADCAST,
win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, -1)
ScreenOFF()
time.sleep(5)
ScreenON()
time.sleep(5)
屏幕关闭工作得很好,但在执行屏幕打开功能时,屏幕只打开一秒钟,然后又立即关闭.我现在什至无法解释为什么会发生这种情况!
也尝试了这种更原始的方法,但这里也是同样的问题:
import time
import ctypes
def ScreenOFF():
\"\"\"
Function to turn off the screen.
\"\"\"
ctypes.windll.user32.SendMessageW(65535, 274, 61808, 2)
def ScreenON():
\"\"\"
Function to turn on the screen.
\"\"\"
ctypes.windll.user32.SendMessageW(65535, 274, 61808, -1)
ScreenOFF()
time.sleep(5)
ScreenON()
这里的another reference link 可能对这里有所帮助。
屏幕关闭时有 github 存储库,like this one,但屏幕上没有!
请建议我是否对此有任何修复或其他更好的方法来打开/关闭屏幕?
-
任何暗示 HWND_BROADCAST 的答案都是不正确的。
-
您可以将 1 作为参数传递。它适用于低功率,但它会工作。周围的大多数答案都建议伪造鼠标移动。
-
通过 1 似乎在我的笔记本电脑上不起作用,我还尝试使用
pyautogui.move(1,1)伪造鼠标移动,但这确实有效...... -
如果可能的话,请投票赞成这个问题以吸引尽可能多的用户......
标签: python windows winapi screen ctypes