Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Смена обоев рабочего стола C# WinForms

Всем привет👋
Хочу сменить обои по кнопке (сами обои возле приложения).
Облазил пол интернета в поисках хорошего кода но нахожу только какие то костыли где можно только bmp поставить и такого плана.
Может кто делал для себя такое приложение и может поделиться методом? Заранее спасибо.

Доброй ночи.

Код

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

int MAX_PATH = 260;
int SPI_GETDESKWALLPAPER = 0x73;
int SPI_SETDESKWALLPAPER = 0x14;
int SPIF_UPDATEINIFILE = 0x01;
int SPIF_SENDWININICHANGE = 0x02;

string GetDesktopWallpaper() {

    string wallpaper = new string('\0', MAX_PATH);
    SystemParametersInfo(SPI_GETDESKWALLPAPER, (int)wallpaper.Length, wallpaper, 0);

    return wallpaper.Substring(0, wallpaper.IndexOf('\0'));
}

void SetDesktopWallpaper(string filePath) {

    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filePath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}

Источник

admin и Удаленный пользователь отреагировали на эту запись.
adminУдаленный пользователь
Цитата: yuri от 29.06.2022, 01:16

Доброй ночи.

Код

 
 
 
 
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
 
int MAX_PATH = 260;
int SPI_GETDESKWALLPAPER = 0x73;
int SPI_SETDESKWALLPAPER = 0x14;
int SPIF_UPDATEINIFILE = 0x01;
int SPIF_SENDWININICHANGE = 0x02;
 
string GetDesktopWallpaper() {
 
string wallpaper = new string('\0', MAX_PATH);
SystemParametersInfo(SPI_GETDESKWALLPAPER, (int)wallpaper.Length, wallpaper, 0);
 
return wallpaper.Substring(0, wallpaper.IndexOf('\0'));
}
 
void SetDesktopWallpaper(string filePath) {
 
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filePath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
[DllImport("user32.dll", CharSet = CharSet.Auto)] static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni); int MAX_PATH = 260; int SPI_GETDESKWALLPAPER = 0x73; int SPI_SETDESKWALLPAPER = 0x14; int SPIF_UPDATEINIFILE = 0x01; int SPIF_SENDWININICHANGE = 0x02; string GetDesktopWallpaper() { string wallpaper = new string('\0', MAX_PATH); SystemParametersInfo(SPI_GETDESKWALLPAPER, (int)wallpaper.Length, wallpaper, 0); return wallpaper.Substring(0, wallpaper.IndexOf('\0')); } void SetDesktopWallpaper(string filePath) { SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filePath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); }
 
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

int MAX_PATH = 260;
int SPI_GETDESKWALLPAPER = 0x73;
int SPI_SETDESKWALLPAPER = 0x14;
int SPIF_UPDATEINIFILE = 0x01;
int SPIF_SENDWININICHANGE = 0x02;

string GetDesktopWallpaper() {

    string wallpaper = new string('\0', MAX_PATH);
    SystemParametersInfo(SPI_GETDESKWALLPAPER, (int)wallpaper.Length, wallpaper, 0);

    return wallpaper.Substring(0, wallpaper.IndexOf('\0'));
}

void SetDesktopWallpaper(string filePath) {

    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filePath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}

Источник

Доброй ночи.
Спасибо, буду пробовать.