文件操作 API

SHFileOperation(...) 移动、复制、改名、删除多个文件或文件夹

SHFileOperation 函数

int SHFileOperation(LPSHFILEOPSTRUCT lpFileOp)
参数 描述
lpFileOp SHFILEOPSTRUCT 结构地址
返回值 0 正常

SHFILEOPSTRUCT 结构

struct SHFILEOPSTRUCT
{
  HWND hwnd;
  UINT wFunc;
  LPCSTR pFrom;
  LPCSTR pTo;
  FILEOP_FLAGS fFlags;
  BOOL fAnyOperationsAborted;
  LPVOID hNameMappings;
  LPCSTR lpszProgressTitle;
}
参数 描述
hwnd 父窗口句柄
wFunc 操作方式(移动/复制/改名/删除)
pFrom 源文件名(多个文件名以\0分隔,末尾以\0\0结束)
pTo 目标目录或目标文件名
fFlags 标记,可多选
fAnyOperationsAborted 返回 TRUE 或 FALSE,表示是否被用户中断操作
hNameMappings 当设为自动重命名时,返回新旧文件名对照表
lpszProgressTitle 当设为不显示文件名时,显示在文件名处的固定信息

wFunc 操作方式

常量 描述
FO_MOVE 移动文件
FO_COPY 复制文件
FO_DELETE 删除文件
FO_RENAME 改名文件

fFlags 标记

常量 描述
FOF_MULTIDESTFILES 指定目标是多个文件,pTo 属性
FOF_CONFIRMMOUSE  
FOF_SILENT 不显示进度报告对话框
FOF_RENAMEONCOLLISION 文件名冲突时重命名,如“复件 XXX”
FOF_NOCONFIRMATION 不提示用户选择,全部确认
FOF_WANTMAPPINGHANDLE  
FOF_ALLOWUNDO 允许撤消操作(仅当源文件名包含全路径)
FOF_FILESONLY 如果指定了 *.* 通配符,则只操作文件
FOF_SIMPLEPROGRESS 不显示进度对话框上的文件名
FOF_NOCONFIRMMKDIR 不提示建立文件夹,全部确认
FOF_NOERRORUI 不提示发生的错误信息
FOF_NOCOPYSECURITYATTRIBS 不复制文件安全信息