Как очистить корзину программно с помощью c # .NET

Какова бы ни была причина, этот фрагмент кода для очистки корзины действительно полезен и прост в реализации. Следуйте шаг за шагом, и вы будете готовы очистить корзину простым щелчком мыши за пару минут.

Очистка корзины

Как первое, включите ссылку на InteropServices с оператором use в верхней части вашего класса, чтобы позже использовать метод DllImport в нашем классе.

using System.Runtime.InteropServices;
using System.Windows.Forms; // As we are using windows forms, we use this namespace to create a dialog to confirm our action

Мы собираемся создать переменную enum, эта переменная будет содержать коды, которые наша функция очистки будет ожидать в качестве параметров.

enum RecycleFlags : uint {
SHRB_NOCONFIRMATION = 0x00000001, // Don't ask confirmation
SHRB_NOPROGRESSUI = 0x00000002, // Don't show any windows dialog
SHRB_NOSOUND = 0x00000004 // Don't make sound, ninja mode enabled :v
}

Затем мы собираемся создать функцию, которая будет очищать корзину, нам нужно импортировать Shell32.dll, поэтому мы включили пространство имен System.Runtime.InteropServices, чтобы использовать функцию SHEmptyRecycleBin из .dll, теперь вам просто нужно объявить это.

[DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, RecycleFlags dwFlags);

Теперь, когда SHEmptyRecycleBin Метод объявлен, мы можем использовать его для окончательной очистки корзины. Мы добавим кнопку, которая вызовет нашу функцию, и мы будем использовать следующий код, чтобы создать диалоговое окно подтверждения и, наконец, очистить корзину.

// On click event of the button
private void button1_Click(object sender, EventArgs e)
{
DialogResult result;
result = MessageBox.Show("Are you sure to delete all items in recycle bin", "Empty Recycle bin", MessageBoxButtons.YesNo);
// If accepted, continue with the cleaning
if (result == DialogResult.Yes)
{
try
{
// Execute the method with the required parameters
uint IsSuccess = SHEmptyRecycleBin(IntPtr.Zero, null, RecycleFlags.SHERB_NOCONFIRMATION);
MessageBox.Show("Empty the RecycleBin successsfully", "Empty the RecycleBin", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
// Handle exceptions
MessageBox.Show("Empty the RecycleBin failed" + ex.Message, "Empty the RecycleBin", MessageBoxButtons.OK, MessageBoxIcon.Stop);
Application.Exit();
}
}
}

Корзина

Завершить урок

Вот как должен выглядеть ваш класс, обратите внимание, что это пустой проект winforms:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace EmptyRecycleBin
{
public partial class Form1 : Form
{
enum RecycleFlags : int
{
SHERB_NOCONFIRMATION = 0x00000001, // Don't ask for confirmation
SHERB_NOPROGRESSUI = 0x00000001, // Don't show progress
SHERB_NOSOUND = 0x00000004 // Don't make sound when the action is executed
}
[DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, RecycleFlags dwFlags);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult result;
result = MessageBox.Show("Are you sure to delete all items in recycle bin", "Empty Recycle bin", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
try
{
uint IsSuccess = SHEmptyRecycleBin(IntPtr.Zero, null, RecycleFlags.SHERB_NOCONFIRMATION);
MessageBox.Show("Empty the RecycleBin successsfully", "Empty the RecycleBin", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show("Empty the RecycleBin failed" + ex.Message, "Empty the RecycleBin", MessageBoxButtons.OK, MessageBoxIcon.Stop);
Application.Exit();
}
}
}
}
}

Повеселись !

Ссылка на основную публикацию
Adblock
detector