WOLF 2018 Ответов: 1

Как изменить фон рабочего стола с помощью C#


Я уже некоторое время пытаюсь изменить фон рабочего стола, но не могу этого сделать. есть ли способ, которым я могу изменить фон рабочего стола с помощью C#? я попробовал какой-то код в google, и там просто сделать мой рабочий стол черным и не добавлять изображение, которое я хочу.

Пожалуйста, помните, что я использую консольное приложение (i thing i spelled that right)

Что я уже пробовал:

static void Main(string[] args)
{
    string photo = "FUN.PNG";
    SetWallpaper(photo);
}
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern Int32 SystemParametersInfo(
UInt32 action, UInt32 uParam, String vParam, UInt32 winIni);

private static readonly UInt32 SPI_SETDESKWALLPAPER = 0x14;
private static readonly UInt32 SPIF_UPDATEINIFILE = 0x01;
private static readonly UInt32 SPIF_SENDWININICHANGE = 0x02;

public static void SetWallpaper(String path)
{
    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path,
        SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}

1 Ответов

Рейтинг:
11

WOLF 2018

Я узнал, как это сделать. ps. вы должны использовать полный путь, вот почему это не сработало.

        static void Main(string[] args)
        {
            string photo = @"C:\Users\Wolf\source\repos\wolf\wolf\bin\Debug\FUN.PNG";
            DisplayPicture(photo);
        }
        [DllImport("user32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool SystemParametersInfo(uint uiAction, uint uiParam, String pvParam, uint fWinIni);

        private const uint SPI_SETDESKWALLPAPER = 0x14;
        private const uint SPIF_UPDATEINIFILE = 0x1;
        private const uint SPIF_SENDWININICHANGE = 0x2;

        private static void DisplayPicture(string file_name)
        {
            uint flags = 0;
            if (!SystemParametersInfo(SPI_SETDESKWALLPAPER,
                    0, file_name, flags))
            {
                Console.WriteLine("Error");
            }
        }
    }
}