Как восстановить обои рабочего стола Windows в режиме слайд-шоу и Windows Spotlight на C#?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как восстановить обои рабочего стола Windows в режиме слайд-шоу и Windows Spotlight на C#?

Сообщение Anonymous »

Контекст
У меня есть консольное приложение на .Net 6 C#, которое заменяет обои рабочего стола текущего пользователя на изображение в течение заданного времени. Я делаю резервную копию текущей конфигурации обоев пользователя, читая реестр. По истечении заданного времени я хотел бы восстановить конфигурацию обоев, которую пользователь имел в начале.
Мне удалось восстановить режим изображения и цветовой режим, но мне это не удалось. для восстановления режима слайд-шоу или Windows Spotlight. В идеале я бы хотел, чтобы он работал в Windows 10, 11, Windows Server 2016, 2019 и 2022 (я понимаю, что между этими средами могут быть различия).
Ключи, которые я использую используйте для чтения текущей конфигурации

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

HKCU\Control Panel\Desktop\Wallpaper      # to read the wallpaper image filepath
HKCU\Control Panel\Desktop\WAllpaperStyle # to read the wallpaper image style (fill, fit ...)
HKCU\Control Panel\Colors\Background      # to read the background color
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers\BackgroundType # to read the background mode (image, color, slideshow, windows spotlight)
Решения для восстановления изображения и цветов
Для восстановления изображения я использовал интерфейс IDesktopWallpaper, а для восстановления цветов я используемые ключи реестра:

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

HKCU\Control Panel\Colors\Background # to restore the saved color
HKCU\Control Panel\Desktop\Wallpaper = "" # to not show any image
HKCU\Control Panel\Desktop\WallpaperStyle = 0
HKCU\Control Panel\Desktop\TileWallpaper = 0
Затем я вызвал следующую функцию, чтобы обновить рабочий стол, прочитав реестр.

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

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, null, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Решения, опробованные для восстановления слайд-шоу
Я попробовал 2 решения: использовать интерфейс IDesktopWallpaper с помощью SetSlideshow() и установить некоторые ключи реестра.
Для IDesktopWallpaper.SetSlideshow я не знаю, как преобразовать список в IShellItemArray. (см. https://learn.microsoft.com/fr-fr/windo ... tslideshow)
Что касается решения реестра, я попробовал устанавливая следующие ключи реестра, но обои просто переключаются из режима изображения в цветовой режим.

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

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers\SlideshowEnabled = 1 # Activate slideshow mode
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers\SlideshowDirectoryPath = "My/Specific/Folder/Path" # Specifies the folder to scan for images
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers\SlideshowTickCount = 60000 # Specifies the delay between two images
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Wallpapers\BackgroundType = 2 # Specifies the slideshow mode

HKCU\Control Panel\Personalization\Desktop Slideshow\Interval = 60000 # For any reasons there is an other key to specify the delay between two images
HKCU\Control Panel\Personalization\Desktop Slideshow\Shuffle = 0 # Whether or not images should be displayed in random order

HKCU\Control Panel\Desktop\Wallpaper = "" # to not show any image
HKCU\Control Panel\Desktop\WallpaperStyle = 6 # apparently this could have a role in specifying slideshow mode
HKCU\Control Panel\Desktop\TileWallpaper = 0
Существует ли какой-либо другой API, о котором я не упомянул? Я что-то упустил в настройке слайд-шоу?
Бонусный вопрос: можно ли восстановить режим прожектора Windows для обоев?

Подробнее здесь: https://stackoverflow.com/questions/788 ... light-mode
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как восстановить обои рабочего стола в режиме Windows Spotlight на C#?
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как восстановить обои рабочего стола в режиме Windows Spotlight на C#?
    Anonymous » » в форуме C#
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Есть ли способ заставить SDL2 C++ использовать обои рабочего стола Windows в качестве дисплея?
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Веб-сайт Flutter отображает пустой экран в режиме рабочего стола в браузере Mobe
    Anonymous » » в форуме Android
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Веб-сайт Flutter отображает пустой экран в режиме рабочего стола в браузере Mobe
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous

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