热情软件屋

 

如何将文件删除到回收站


编号:QA002594
建立日期: 2000年2月17日 最后修改日期:2000年3月16日
所属类别:

kvdvm:
    编程工具: C++ Builder 4
    操作系统: win98
    用SHFileOperation删除文件时如何将文件删除到回收站?

回答:

    SHFileOperation的参数是如下的一个结构:
    typedef struct _SHFILEOPSTRUCT { // shfos
     HWND hwnd;
     UINT wFunc;
     LPCSTR pFrom;
     LPCSTR pTo;
     FILEOP_FLAGS fFlags;
     BOOL fAnyOperationsAborted;
     LPVOID hNameMappings;
     LPCSTR lpszProgressTitle;
    } SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;
    设置wFunc为FO_DELETE就是进行删除。如果fFlags成员包括FOF_ALLOWUNDO就是放到回收站,否则就是彻底删除。
    
    古月剑龙问:
    Pvb5/pwin98,主要问题:怎样使用回收站功能
    1、在下现在遇到了一个文件操作的问题:怎么样把文件移动回收站(删除)? 在下只能在你站上找到XX站有这方面的资料(在下的E文很不好,主要是用169上网)。
    2、这次在下最想得到一个演示源代码:在使用删除命令时,用上系统的回收站功能。
    回答:
    这里是一个例子:
    1、先定义一个模块,放入以下语句:
     Public Const FO_MOVE As Long = &H1
     Public Const FO_COPY As Long = &H2
     Public Const FO_DELETE As Long = &H3
     Public Const FO_RENAME As Long = &H4
    
     Public Const FOF_MULTIDESTFILES As Long = &H1
     Public Const FOF_CONFIRMMOUSE As Long = &H2
     Public Const FOF_SILENT As Long = &H4
     Public Const FOF_RENAMEONCOLLISION As Long = &H8
     Public Const FOF_NOCONFIRMATION As Long = &H10
     Public Const FOF_WANTMAPPINGHANDLE As Long = &H20
     Public Const FOF_CREATEPROGRESSDLG As Long = &H0
     Public Const FOF_ALLOWUNDO As Long = &H40
     Public Const FOF_FILESONLY As Long = &H80
     Public Const FOF_SIMPLEPROGRESS As Long = &H100
     Public Const FOF_NOCONFIRMMKDIR As Long = &H200
    
     Type SHFILEOPSTRUCT
     hwnd As Long
     wFunc As Long
     pFrom As String
     pTo As String
     fFlags As Long
     fAnyOperationsAborted As Long
     hNameMappings As Long
     lpszProgressTitle As String
     End Type
    
     Declare Function SHFileOperation Lib "Shell32.dll" _
     Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
     Declare Function GetTempFileName Lib "kernel32" _
     Alias "GetTempFileNameA" (ByVal lpszPath As String, _
     ByVal lpPrefixString As String, ByVal wUnique As Long, _
     ByVal lpTempFileName As String) As Long
    2、再输入下面的程序
     Dim FileOperation As SHFILEOPSTRUCT
     Dim lReturn As Long
     Dim sTempFilename As String * 100
     Dim sSendMeToTheBin As String
     lReturn = GetTempFileName("c:\", "VB_", 0, sTempFilename)
     sSendMeToTheBin = Left(sTempFilename, InStr(sTempFilename, _
     Chr$(0)))
     With FileOperation
     .wFunc = FO_DELETE
     .pFrom = sSendMeToTheBin ' 要删除的文件名
     .fFlags = FOF_ALLOWUNDO ' 放入回收站
     End With
     lReturn = SHFileOperation(FileOperation)
     MsgBox "现在查看你的回收站,寻找以VB_开头的文件。"
    
    相关问题:
    QA001138 "如何删除目录及下面的文件和子目录"
    QA001214 "VC中是否有API能对文件操作带通配符"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio