python 我如何创建一个程序来调整窗口上的屏幕亮度?

sirbozc5  于 5个月前  发布在  Python
关注(0)|答案(1)|浏览(65)

我试图创建一个简单的程序,自动调整屏幕亮度的每一个单一的应用程序窗口,我试图使用PyWin32,但它只是发送消息到操作系统,并没有亮度水平的变化!
我使用pip安装了pywin32
使用win32.guiwin32.apiwin32.con
下面是Python代码:

import win32con, win32api, win32gui

def get_active_window_titel():
    window_handle = win32gui.GetForegroundWindow()
    window_title = win32gui.GetWindowText(window_handle)
    return window_title

def adjust():
    active_app = get_active_window_titel()
    if "Action center" in active_app:
        win32api.SendMessage(win32con.HWND_BROADCAST, 
        win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 10)
    else:
        win32api.SendMessage(win32con.HWND_BROADCAST, 
        win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 10)

while True:
    adjust()

字符串

xytpbqjk

xytpbqjk1#

带有10参数的win32con.SC_MONITORPOWER消息通常对应于关闭显示器。如果要调整屏幕亮度,则需要使用带有SPI_SETSCREENBRIGHTNESS操作的WM_SETTINGCHANGE消息。

import win32con
import win32gui
import ctypes

def get_active_window_title():
    window_handle = win32gui.GetForegroundWindow()
    window_title = win32gui.GetWindowText(window_handle)
    return window_title

def adjust_brightness(brightness):
    SC_MONITORPOWER = 0xF170
    WM_SETTINGCHANGE = 0x001A
    SPI_SETSCREENBRIGHTNESS = 0x0101

    # Set the brightness value (0 to 100)
    brightness_value = int(brightness * 65535 / 100)
    ctypes.windll.kernel32.SetProcessDPIAware()
    ctypes.windll.user32.SendMessageW(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 0)
    ctypes.windll.user32.SendMessageTimeoutW(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 0, win32con.SMTO_NORMAL, 1000, 0)

while True:
    brightness_value = 50  # Adjust this value as needed (0 to 100)
    adjust_brightness(brightness_value)

字符串

相关问题