Смена обоев рабочего стола не всегда работает

386
18 июля 2017, 17:24
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern int SystemParametersInfo(int uAction, int uParam, IntPtr lpvParam, int fuWinIni);
private void picturebox1_DragDrop(object sender, DragEventArgs e)
{
  var dropfiles = (string[])e.Data.GetData(DataFormats.FileDrop);
  foreach (var file in dropfiles)
  {
    var filename = getFileName(file);
    ShowWallpapeR.Image = Image.FromFile(file);
    SystemParametersInfo
    (
       SPI_SETDESKWALLPAPER, 1, Marshal.StringToBSTR(file), 
       SPIF_UPDATEINIFILE  |  SPIF_SENDWININICHANGE
    );
  }
}
static readonly List<string> ImageExtensions = new List<string> { ".JPG", ".BMP"};
private void picturebox1_DragEnter(object sender, DragEventArgs e)
{
   if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
   {
     var allowFilesDrop = true;
     foreach (var f in (string[])e.Data.GetData(DataFormats.FileDrop, true))
     {
       allowFilesDrop = ImageExtensions.Contains(Path.GetExtension(f).ToUpperInvariant());
     }
     if (allowFilesDrop)
     {
        e.Effect = DragDropEffects.Move;
     }
   }
}

На windows 7 не всегда меняются обои, есть ли этому решение?

READ ALSO
Совместное использование Attach() и Entry() в Entity Framework

Совместное использование Attach() и Entry() в Entity Framework

Заметил, что часто используют эти методы в связке:

315
Изменить иконку формы CSharpCodeProvider c#

Изменить иконку формы CSharpCodeProvider c#

Динамически компилирую ехе

293
Различия методов Find(), FirstOrDefault() при использовании с Entity Framework

Различия методов Find(), FirstOrDefault() при использовании с Entity Framework

Если нужно получить запись из базы данных по ее первичному ключу, можно воспользоваться и тем и другим методомОба метода вернут объект сущности,...

393
c# blend создание кнопок

c# blend создание кнопок

Как в Blend с помощью кода создать кнопку и присвоить ей шаблон программно ?

289