我有2台显示器,当我在主显示器上观看电影时,我希望另一台显示器关闭。 我不想按下电源按钮,因为在黑暗中很难找到它。
此代码关闭两个屏幕
class Mode(Object):
STAND_BY = 1
TURN_ON = -1
TURN_OFF = 2
SC_MONITORPOWER = 0xF170
win32gui.SendMessage(win32con.HWND_BROADCAST, win32con.WM_SYSCOMMAND, SC_MONITORPOWER, Mode.TURN_OFF)
我也尝试以这种方式处理我的其他屏幕:
monitors = win32api.EnumDisplayMonitors(None, None)
(hSecondMon, _, (_, _, secondRight, secondButtom)) = monitors[1]
win32gui.SendMessage(hSecondMon, win32con.WM_SYSCOMMAND, SC_MONITORPOWER, Mode.TURN_OFF)
但它没有用。
然而,我能够将其颜色改为黑色:
monitors = win32api.EnumDisplayMonitors(None, None)
(_, _, (_, _, primRight, _)) = monitors[0]
(hSecondMon, _, (_, _, secondRight, secondButtom)) = monitors[1]
hDeskDC = win32gui.CreateDC(win32api.GetMonitorInfo(hSecondMon)['Device'], None, None)
brush = win32gui.GetSysColorBrush(win32con.COLOR_BACKGROUND)
win32gui.FillRect(hDeskDC, (0, 0, secondRight - primRight, secondButtom), brush)
但这还不够好,因为只要我的桌面背景发生变化,它就会重新显示第二个屏幕。