Загрузка...

Change wallpaper - Change your desktop wallpaper

Thread in C# created by Грут_inactive2721729 Apr 28, 2020. 155 views

  1. Грут_inactive2721729
    Грут_inactive2721729 Topic starter Apr 28, 2020 Banned 70 Oct 23, 2019
    Сейчас я напишу простой способ замены обоев рабочего стола программным способом..

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

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

    Создадим класс NativeMethods.cs

    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);
    }
    }

    Подробнее про SystemParametersInfo можете почитать тут - http://rusproject.narod.ru/winapi/s/systemparametersinfo.html

    Переходим в код формы, и запишем в него данный код:

    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;
    }
    }
    }
    }
     
Top
Loading...