Как поменять обои через реестр не перезагружая ПК
Цитата: Удаленный пользователь от 02.08.2022, 13:52Приветствую!
Хочу сделать программу, которая будет менять обои в зависимости от времени НЕ перезагружая ПК
Есть ключ реестра WallPaper [spoiler title="Путь"]Компьютер\HKEY_CURRENT_USER\Control Panel\Desktop[/spoiler]
Если я его изменю на другую картинку, то обои поменяются после перезагрузки ПК, пробовал открывать проводник, обновлять рабочий стол, никак
Кто-то знает как избежать перезагрузку ПК?
Наверняка есть способ, ведь винда меняет обои без перезагрузкиУ меня есть предположение, то что ключ реестра TranscodedImageCache по тому же пути, надо как-то изменить
Вот, что сделала винда, когда я сменил обои [spoiler title="Картинка"]
[/spoiler]
[MNotice]Как оформлять свои темы и комментарии | Как делать крутые скриншоты[/MNotice]
Приветствую!
Хочу сделать программу, которая будет менять обои в зависимости от времени НЕ перезагружая ПК
Есть ключ реестра WallPaper
СкопированоКомпьютер\HKEY_CURRENT_USER\Control Panel\DesktopЕсли я его изменю на другую картинку, то обои поменяются после перезагрузки ПК, пробовал открывать проводник, обновлять рабочий стол, никак
Кто-то знает как избежать перезагрузку ПК?
Наверняка есть способ, ведь винда меняет обои без перезагрузки
У меня есть предположение, то что ключ реестра TranscodedImageCache по тому же пути, надо как-то изменить
Вот, что сделала винда, когда я сменил обои
[MNotice]Как оформлять свои темы и комментарии | Как делать крутые скриншоты[/MNotice]
Цитата: Удаленный пользователь от 02.08.2022, 14:07Приветствую.
Первая ссылка в гугле говорит, что это делается WinAPI функциейSystemParametersInfoсSPI_SETDESKWALLPAPERв качестве первого аргумента.
Приветствую.
Первая ссылка в гугле говорит, что это делается WinAPI функцией СкопированоSystemParametersInfo с СкопированоSPI_SETDESKWALLPAPER в качестве первого аргумента.
Цитата: Удаленный пользователь от 02.08.2022, 14:43Спасибо за ответ, всё работает
[spoiler title="Мой код"]
[DllImport("user32.dll")] // Подключаем .dll WinApi static extern void SystemParametersInfo(int uiAction, int uiParam, bool pvParam, int fWinIni); // НАЗВАНИЕ ИМЕННО ТАКОЕ! void MainForm_Load(object sender, EventArgs e) { Method(); } [Flags] public enum MouseEventFlags { SPI_SETDESKWALLPAPER = 0x0014 } void Method() { using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true)) // Открываем раздел с доступом на запись key.SetValue("WallPaper", @"C:\Kolya\PhotoShop\Мои Проекты\bmw-e46-m3-black-tuning-bmv.png"); // Меняем значение SystemParametersInfo((int)MouseEventFlags.SPI_SETDESKWALLPAPER, 0, false, 0); }
[/spoiler]
Спасибо за ответ, всё работает
[DllImport("user32.dll")] // Подключаем .dll WinApi
static extern void SystemParametersInfo(int uiAction, int uiParam, bool pvParam, int fWinIni); // НАЗВАНИЕ ИМЕННО ТАКОЕ!
void MainForm_Load(object sender, EventArgs e)
{
Method();
}
[Flags]
public enum MouseEventFlags
{
SPI_SETDESKWALLPAPER = 0x0014
}
void Method()
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true)) // Открываем раздел с доступом на запись
key.SetValue("WallPaper", @"C:\Kolya\PhotoShop\Мои Проекты\bmw-e46-m3-black-tuning-bmv.png" style="color: #25d39d !important"); // Меняем значение
SystemParametersInfo((int)MouseEventFlags.SPI_SETDESKWALLPAPER, 0, false, 0);
}
