3

有没有办法用 python 控制屏幕/监视器,例如再次将其关闭(类似于笔记本电脑键盘上的快捷按钮)?

谢谢!

4

3 回答 3

7

大多数现代笔记本电脑在按钮和显示器之间都有物理连接。例如,我的戴尔 Precision 我甚至可以在 BIOS 启动之前启动 PC 并使我的显示器变暗,这告诉我,它是通过硬件连接进行连接的。

遗憾的是,我仍然可以从操作系统内部模拟一些系统调用来执行任务,而不仅仅是按下实际按钮那样节能。

这样做需要您(在 Windows 上)使用pywin32连接到适当的系统 API 并执行一个非常具体的命令来执行此操作,如果您不熟悉系统 API 并调用 Windows 32 函数,这会很棘手。

类似于以下内容:

import os, win32com.client

def runScreensaver():
    strComputer = "."
    objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
    objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
    colItems = objSWbemServices.ExecQuery("Select * from Win32_Desktop")
    for objItem in colItems:
        if objItem.ScreenSaverExecutable:
            os.system(objItem.ScreenSaverExecutable + " /start")
            break

如果您使用的是linux,则可以尝试执行os.system()以下操作之一:

于 2013-05-06T16:23:06.713 回答
3

在蟒蛇

    import win32gui
    import win32con

    #to turn off use :-
    win32gui.SendMessage(win32con.HWND_BROADCAST,
                     win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 2)
    #turn on use :-
    win32gui.SendMessage(win32con.HWND_BROADCAST,
                     win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, -1)
于 2019-05-28T03:35:08.393 回答
0

您可以在 linux 中进行此操作:

def set_brightness(brightness):
    if int(brightness) > 15:
        raise TypeError("Need int 0 < and > 15")
    elif int(brightness) < 0:
        raise TypeError("Need int 0 < and > 15")
    with open("/sys/devices/pci0000:00/0000:00:02.0/backlight/acpi_video0/brightness","w") as bright:
         bright.write(str(brightness))
         bright.close()
set_brightness(0) #Brightness 0-15
于 2018-12-14T16:27:28.417 回答