当前位置: 代码迷 >> 综合 >> 在VB中使用API“SHFileOperation”删除文件的三个问题
  详细解决方案

在VB中使用API“SHFileOperation”删除文件的三个问题

热度:41   发布时间:2023-12-11 23:30:59.0

使用API“SHFileOperation”来删除文件,一般的写法是:

Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Const FO_DELETE = &H3
Public Const FOF_ALLOWUNDO = &H40
'还有其他若干常数
Public Type SHFILEOPSTRUCT
  hWnd As Long
  wFunc As Long
  pFrom As String
  pTo As String
  fFlags As Integer
  fAborted As Boolean
  hNameMaps As Long
  sProgress As String
End Type
Public SHFileOp As SHFILEOPSTRUCT

一个问题是,即使设置了:SHFileOp.fFlags = FOF_ALLOWUNDO 
也仍然会直接删除文件,而不是到回收站。貌似不起作用。
解决方法:(来自网络)
回复于: 2002-07-05 14:23:47
您的这个问题是因为您在SHFILEOPSTRUCT结构中的pFrom参数中
给出的是目标文件的相对位置,这样即使您使用FOF_ALLOWUNDO标记,
您的文件也将被直接删除。要解决这个问题,
只需要在pFrom中给出文件的完整路径。
<