C #: установить обои для рабочего стола на сплошной цвет - PullRequest
3 голосов
/ 05 сентября 2011

Я использую этот код для удаления текущих обоев и установки сплошного цвета:

public static class WallpaperColorChanger
{

    public static void SetColor(Color color)
    {

        // Remove the current wallpaper
        NativeMethods.SystemParametersInfo(
            NativeMethods.SPI_SETDESKWALLPAPER,
            0,
            "",
            NativeMethods.SPIF_UPDATEINIFILE | NativeMethods.SPIF_SENDWININICHANGE);

        // Set the new desktop solid color for the current session
        int[] elements = { NativeMethods.COLOR_DESKTOP };
        int[] colors = { System.Drawing.ColorTranslator.ToWin32(color) };
        NativeMethods.SetSysColors(elements.Length, elements, colors);

        // Save value in registry so that it will persist
        RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Colors", true);
        key.SetValue(@"Background", string.Format("{0} {1} {2}", color.R, color.G, color.B));
    }

    private static class NativeMethods
    {
        public const int COLOR_DESKTOP = 1;
        public const int SPI_SETDESKWALLPAPER = 20;
        public const int SPIF_UPDATEINIFILE = 0x01;
        public const int SPIF_SENDWININICHANGE = 0x02;

        [DllImport("user32.dll")]
        public static extern bool SetSysColors(int cElements, int[] lpaElements, int[] lpaRgbValues);

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

Однако, если включена функция слайд-шоу в Windows 7 и обои меняются, например, каждые 30 минут, когда я запускаю код, он меняет обои на сплошной цвет, но при перезагрузке компьютера он возвращает обои и Функция слайд-шоу.

Что еще я должен сделать, чтобы получить сплошной цвет даже после перезагрузки компьютера?

Я использую C #, Windows Forms, Windows 7.

1 Ответ

1 голос
/ 05 сентября 2011

Из памяти (прошло некоторое время с тех пор, как я сделал что-то подобное), если вы установите обои на рабочем столе на НИЧЕГО (пустая строка), затем установите их в файл (может быть прозрачным пикселем, если хотите, затем установите его набольше ничего, я считаю, что это отключает слайд-шоу.

Вы можете просто установить цвет рабочего стола, и он должен придерживаться. Что касается программы, отключающей слайд-шоу обоев, я понятия не имею, к чему призывает win apiто есть.

...