Как изменить обои на всех виртуальных рабочих столах (нескольких рабочих столах) в Windows 11 программно с помощью PythoPython

Программы на Python
Ответить
Anonymous
 Как изменить обои на всех виртуальных рабочих столах (нескольких рабочих столах) в Windows 11 программно с помощью Pytho

Сообщение Anonymous »

Я пытаюсь написать скрипт Python, который меняет обои рабочего стола. В настоящее время я могу изменить обои текущего виртуального рабочего стола, используя ctypes и реестр Windows:

Код: Выделить всё

import ctypes
import winreg

def set_wallpaper_simple(image_path: str):
try:
abs_path = os.path.abspath(image_path)

key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
"Control Panel\\Desktop",
0,
winreg.KEY_SET_VALUE)
winreg.SetValueEx(key, "Wallpaper", 0, winreg.REG_SZ, abs_path)
winreg.SetValueEx(key, "WallpaperStyle", 0, winreg.REG_SZ, "10")
winreg.SetValueEx(key, "TileWallpaper", 0, winreg.REG_SZ, "0")
winreg.CloseKey(key)

ctypes.windll.user32.SystemParametersInfoW(20, 0, abs_path, 3)
return True
except Exception as e:
return False
Это работает нормально, но обои меняются только на ТЕКУЩЕМ ВИРТУАЛЬНОМ РАБОТЕ (тот, на котором я сейчас нахожусь). Если я переключусь на другой виртуальный рабочий стол (с помощью Ctrl+Win+Right/Left ), обои останутся старыми.
Я хочу, чтобы обои обновлялись на ВСЕХ ВИРТУАЛЬНЫХ СТОЛАХ одновременно — на рабочих столах 2, 3 и т. д. — а не только на текущем.
Я пробовал искать функции Windows API, связанные с виртуальными рабочими столами, изучая IVirtualDesktopManager, но не знаю, как это сделать. для взаимодействия с ним из Python.
Есть ли способ применить смену обоев ко всем виртуальным рабочим столам в Windows 11 программным способом с помощью Python? Если не через реестр, возможно, я могу использовать COM-интерфейс или другой API?
Я использую Python 3.13 в Windows 11.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -windows-1
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»