FAQ Change wallpaper - Смена обоев рабочего стола

  • Автор темы SectorIder
  • Дата начала
  • Ответы 0
  • Просмотры 28

SectorIder

Интересующийся
Участник

SectorIder

Интересующийся
Участник

Сейчас я напишу простой способ замены обоев рабочего стола программным способом..

Создаём форму
Пожалуйста , Вход или Регистрация чтобы увидеть ссылку!
- Меняем название какое нравится... например
Пожалуйста , Вход или Регистрация чтобы увидеть ссылку!

На форму кинем компонент PictureBox - Меняем ему название на CWShow
В свойствах формы обязательно выставьте поведение AllowDrop на true
В форме перейдём во вкладку "События" Выберем DragDrop и DragEnter

Теперь запишем данный код для работы замены.

Создадим класс
Пожалуйста , Вход или Регистрация чтобы увидеть ссылку!

C#:
using System;
using System.Runtime.InteropServices;

namespace Change_wallpaper
{
internal static class NativeMethods
{
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int SystemParametersInfo(int uAction, int uParam, IntPtr lpvParam, int fuWinIni);
}
}
Подробнее про
Пожалуйста , Вход или Регистрация чтобы увидеть ссылку!
можете почитать
Пожалуйста , Вход или Регистрация чтобы увидеть ссылку!
-
Пожалуйста , Вход или Регистрация чтобы увидеть ссылку!


Переходим в код формы, и запишем в него данный код:
C#:
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;

/* Author r3xq1 */

namespace Change_wallpaper
{
public partial class WallpaperFrm : Form
{
public const int SPI_SETDESKWALLPAPER = 20, SPIF_UPDATEINIFILE = 1, SPIF_SENDWININICHANGE = 2;

public WallpaperFrm()
{
InitializeComponent();
this.AllowDrop = true;
DragEnter += new DragEventHandler(CWShow_DragEnter);
DragDrop += new DragEventHandler(CWShow_DragDrop);
}

private void CWShow_Click(object sender, System.EventArgs e)
{
this.CWShow.Image = Properties.Resources.drag_and_drop_icon;
}

private void CWShow_DragDrop(object sender, DragEventArgs e)
{
foreach (string text in (string[])e.Data.GetData(DataFormats.FileDrop))
{
Path.GetFileNameWithoutExtension(text);
this.CWShow.Image = Image.FromFile(text);
NativeMethods.SystemParametersInfo(20, 1, Marshal.StringToBSTR(text), 3);
}
}

private void CWShow_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
{
bool allowFilesDrop = true;
foreach (string test in (string[])e.Data.GetData(DataFormats.FileDrop, true))
{
allowFilesDrop = !(new FileInfo(test).Extension != ".jpg" &&
new FileInfo(test).Extension != ".png");
}

if (allowFilesDrop)
e.Effect = DragDropEffects.Move;
this.CWShow.SizeMode = PictureBoxSizeMode.StretchImage;
}
}
}
}
 
Сверху Снизу