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

sirbozc5  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(164)

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

  1. import win32con, win32api, win32gui
  2. def get_active_window_titel():
  3. window_handle = win32gui.GetForegroundWindow()
  4. window_title = win32gui.GetWindowText(window_handle)
  5. return window_title
  6. def adjust():
  7. active_app = get_active_window_titel()
  8. if "Action center" in active_app:
  9. win32api.SendMessage(win32con.HWND_BROADCAST,
  10. win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 10)
  11. else:
  12. win32api.SendMessage(win32con.HWND_BROADCAST,
  13. win32con.WM_SYSCOMMAND, win32con.SC_MONITORPOWER, 10)
  14. while True:
  15. adjust()

字符串

xytpbqjk

xytpbqjk1#

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

  1. import win32con
  2. import win32gui
  3. import ctypes
  4. def get_active_window_title():
  5. window_handle = win32gui.GetForegroundWindow()
  6. window_title = win32gui.GetWindowText(window_handle)
  7. return window_title
  8. def adjust_brightness(brightness):
  9. SC_MONITORPOWER = 0xF170
  10. WM_SETTINGCHANGE = 0x001A
  11. SPI_SETSCREENBRIGHTNESS = 0x0101
  12. # Set the brightness value (0 to 100)
  13. brightness_value = int(brightness * 65535 / 100)
  14. ctypes.windll.kernel32.SetProcessDPIAware()
  15. ctypes.windll.user32.SendMessageW(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 0)
  16. ctypes.windll.user32.SendMessageTimeoutW(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 0, win32con.SMTO_NORMAL, 1000, 0)
  17. while True:
  18. brightness_value = 50 # Adjust this value as needed (0 to 100)
  19. adjust_brightness(brightness_value)

字符串

展开查看全部

相关问题