zl程序教程

您现在的位置是:首页 >  .Net

当前栏目

C#怎样判断回收站是否为空

2023-02-19 12:17:27 时间
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

///C# 判断回收站是否为空
///作者:三角猫
namespace 操作回收站
{
    class Program
    {
        [StructLayout(LayoutKind.Explicit, Size = 20, Pack=4)]
        public struct SHQUERYRBINFO
        {
            [FieldOffset(0)]
            public int cbSize;
            [FieldOffset(4)]
            public long i64Size;
            [FieldOffset(12)]
            public long i64NumItems;
        }

        [DllImport("shell32.dll")]
        static extern int SHQueryRecycleBin(string pszRootPath, ref SHQUERYRBINFO pSHQueryRBInfo);

        static void Main(string[] args)
        {
            if (IsRecyleBinEmpty())
                Console.Write("回收站为空");
            else
                Console.Write("回收站非空");

            Console.ReadKey();
        }

        static Boolean IsRecyleBinEmpty()
        {
            SHQUERYRBINFO sqrbi = new SHQUERYRBINFO();
            sqrbi.cbSize = Marshal.SizeOf(typeof(SHQUERYRBINFO));
            int hResult = SHQueryRecycleBin(string.Empty, ref sqrbi);
            if (hResult == 0)
            {
                return(sqrbi.i64NumItems <= 0);
            }

            throw new Exception("查询回收站发生错误!");
        }
    }
}