有没有办法用 python 控制屏幕/监视器,例如再次将其关闭(类似于笔记本电脑键盘上的快捷按钮)?
谢谢!
大多数现代笔记本电脑在按钮和显示器之间都有物理连接。例如,我的戴尔 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()
以下操作之一:
在蟒蛇
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)
您可以在 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