6

Я хочу программно менять обои для рабочего стола каждые несколько часов. Я использую командный файл (.bat) и не хочу использовать другие языки или программы, только предварительно установленный материал с Windows XP. Я уже сделал свой скрипт, который будет изменять значения в реестре

reg add "HKCU\Control Panel\Desktop" /v Wallpaper /d "C:\Pictures\picture1.jpg"

Проблема в том, что скрипт не вступает в силу в реальном времени даже с этой командой:

RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True

Мне нужно перезагрузить компьютер, чтобы он вступил в силу.

Если я собираюсь использовать свойства дисплея, он будет показан сразу. Я заметил, что изменения вступят в силу в режиме реального времени, если это файл .bmp, а не для изображений .jpg.

Второй вариант - конвертировать JPG в 24-битные файлы BMP (чтобы он выглядел точно так же, но утроил размер файла), но я надеюсь, что получится лучше.

Я уже гуглил вещи, но безрезультатно. Я надеюсь, что вы (полезный читатель) можете опубликовать любой скрипт .bat или даже .vbs, чтобы мгновенно менять обои для рабочего стола с изображениями JPG. Я надеюсь, что есть ответ без установки других приложений или сценариев.

2 ответа2

3

если я собираюсь использовать свойства дисплея, он будет показан сразу. Я заметил, что изменения вступят в силу в режиме реального времени, если это файл .bmp, а не для изображений .jpg.

Это потому, что Windows не поддерживает ничего, кроме растровых изображений для обоев (да, даже в Windows 7).

Когда вы устанавливаете jpeg, gif, png и т.д. В качестве фонового рисунка, Windows сначала преобразует его в растровое изображение, сохраняет его во временный файл и устанавливает фоновый рисунок для этого файла (в Windows 7 это более характерно для имени файла):

In Windows XP: %appdata%\Microsoft\Internet Explorer\Wallpaper1.bmp
In Windows 7:  %appdata%\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg

Поэтому я боюсь, что вам действительно нужно сначала преобразовать его в растровое изображение.

1

Попробуйте перезапустить проводник, который перезапустит реестр, который может (не проверен) изменить фон без перезагрузки.

Сделать это в пакетном режиме

taskkill /im explorer.exe /f && explorer

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .