C#引用Microsoft.VisualBasic将目录或文件删除到回收站。

本文介绍如何使用C#通过调用ShellAPI或利用Microsoft.VisualBasic库中的方法将文件发送到回收站,同时展示了如何使用Microsoft.VisualBasic库获取系统内存信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. usingSystem.Runtime.InteropServices;
  2. privateconstintFO_DELETE=0x3;
  3. privateconstushortFOF_NOCONFIRMATION=0x10;
  4. privateconstushortFOF_ALLOWUNDO=0x40;
  5. [DllImport("shell32.dll")]
  6. privatestaticexternintSHFileOperation([In,Out]_SHFILEOPSTRUCTstr);
  7. [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)]
  8. publicclass_SHFILEOPSTRUCT
  9. {
  10. publicIntPtrhwnd;
  11. publicUInt32wFunc;
  12. publicstringpFrom;
  13. publicstringpTo;
  14. publicUInt16fFlags;
  15. publicInt32fAnyOperationsAborted;
  16. publicIntPtrhNameMappings;
  17. publicstringlpszProgressTitle;
  18. }
  19. publicstaticintDeleteToRecycleBin(stringpath)
  20. {
  21. _SHFILEOPSTRUCTpm=new_SHFILEOPSTRUCT();
  22. pm.wFunc=FO_DELETE;
  23. pm.pFrom=path+'/0';
  24. pm.pTo=null;
  25. pm.fFlags=FOF_ALLOWUNDO|FOF_NOCONFIRMATION;
  26. returnSHFileOperation(pm);
  27. }
  28. privatevoidbutton1_Click(objectsender,EventArgse)
  29. {
  30. DeleteToRecycleBin(@"c:/temp/temp.txt");
  31. }
以前在Delphi里写过,关于Windows文件浏览器相关的操作可以调用ShellAPI相关的函数。
所以先找了一个API的方式。

后来在我记忆里有一个Microsoft.VisualBasic的方法,能更方便地实现 SHFileOperation()的调用。
还能显示出确认对话框:



  1. privatevoidbutton1_Click(objectsender,EventArgse)
  2. {
  3. //-----------
  4. //项目中添加Microsoft.VisualBasic引用
  5. Microsoft.VisualBasic.FileIO.FileSystem.DeleteFile(@"d:/temp/temp.txt",
  6. Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
  7. Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin,
  8. Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
  9. }
是的,上次一个问题是:VB中的 Format, IIf函数在C#中如何实现,知道这个引用就简单了
  1. Microsoft.VisualBasic.Strings.Format();
  2. Microsoft.VisualBasic.Interaction.IIf();
还有其他相关的方法,比如获取内存使用量
  1. //-----------
  2. //项目中添加Microsoft.VisualBasic引用
  3. //usingMicrosoft.VisualBasic.Devices;
  4. Computercomputer=newComputer();
  5. Console.WriteLine("AvailablePhysicalMemory:{0}M",
  6. computer.Info.AvailablePhysicalMemory/(1024*1024));
  7. Console.WriteLine("AvailableVirtualMemory:{0}M",
  8. computer.Info.AvailableVirtualMemory/(1024*1024));

在.NET环境下,能不用API就不用API。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值