c#回收站相关函数

清空回收站,可调用SHEmptyRecycleBin 函数,在shell32.dll,dwFlags参数指定清空回收站时,是否显示提示操作的对话框?显示删除过程的进度条? 静音操作?

注意:SHEmptyRecycleBin 函数必须在标识为STA的线程里才能成功调用


调用SHQueryRecycleBin 函数查询 指定目录(或者整个回收站,当pszRootPath参数为null时),有多少个被删除到回收站的项,以及它们占用多大的空间


在客户端的代码实现处不能确定调用SHEmptyRecycleBin 函数的线程是否是一个STA线程,或许它就是一个MTA线程,并且线程一旦在运行,就不能改变它的单位状态,也就是:不能调用Thread.SetApartmentState来设置已经在运行的线程的单位状态。.net默认的线程为MTA单位.因此想要成功调用SHEmptyRecycleBin 必须在STA的线程里;或者开启一个新的STA线程来操作:只有这样才能在不影响其他代码在实现的限制。

RecycleBinInfo类是对SHEmptyRecycleBin 函数和SHQueryRecycleBin 这两个函数的封装,如果用户调用RecycleBinInfo.SHEmptyRecycleBin 的任何一个重载都会在内部开启一个STA单位的线程,这样,在不影响外部线程单位状态的前提下实现清空回收站。

这里是代码实现,可导出为DLL

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Threading;
using System.Runtime.InteropServices;

namespace Feng {
    namespace WinShellApi {
             [Flags]
            public enum SHERB:uint {
             /*   #define SHERB_NOCONFIRMATION    0x00000001
#define SHERB_NOPROGRESSUI      0x00000002
#define SHERB_NOSOUND           0x00000004*/

                /// <summary>
                /// 不选择其他的三个项,不可与其他选项同时使用
                /// </summary>
                SHERB_GENNERAL=0x00000000,

                /// <summary>
                /// 不显示确认删除的对话框
                /// </summary>
                 SHERB_NOCONFIRMATION = 0x00000001,
              /// <summary>
                /// 不显示删除过程的进度条
                /// </summary>
                SHERB_NOPROGRESSUI=0x00000002,
                  /// <summary>
                /// 当删除完成时,不播放声音
                /// </summary>
                 SHERB_NOSOUND = 0x00000004
              
            };


        [StructLayout(LayoutKind.Explicit,Pack=2)]
        public struct SHQUERYRBINFO {
            //这个结构必须是用户显示编写偏移量才能准确获取数值
            [FieldOffset(0)]
            public int cbsize;
            [FieldOffset(4)]
            public long i64Size;
            [FieldOffset(12)]
            public long i64NumItems;
        };

        public static class LibWarp {

     

            /// <summary>
            /// 清空指定磁盘或目录的回收站的内容
            /// </summary>
            /// <param name="hwnd">对话框的句柄,通常应当设为NULL</param&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值