C # Изменить шаблон рабочего стола - PullRequest
2 голосов
/ 31 мая 2009

Я делаю простой сменщик обоев. Это работает при смене обоев, но я не могу изменить рисунок обоев. Я пытался что-то вроде этого, но это не работает: S

SystemParametersInfo(SPI_SETDESKPATTERN, 0, "Center",
SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

Может ли кто-нибудь1, пожалуйста, показать мне правильный способ установки рисунка обоев?

1 Ответ

3 голосов
/ 01 июня 2009

Я предполагаю, что вы имеете в виду настройку по центру / растянутости / плитке, которая будет вторым прошедшим значением int 1-3

[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;

        private void SetWallpaper(string path)
        {
            if (File.Exists(path))
            {
                Image imgInFile = Image.FromFile(path);
                try
                {
                    imgInFile.Save(SaveFile, ImageFormat.Bmp);
                    SystemParametersInfo(SPI_SETDESKWALLPAPER, 3, SaveFile, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
                }
                catch
                {
                    MessageBox.Show("error in setting the wallpaper");
                }
                finally
                {
                    imgInFile.Dispose();
                }
            }
        }
...