MFC-SHFileOperation文件操作
SHFileOperation是一种shell函数,shfileoperation的主要功能包括文件和目录的复制、移动、删除等常用的操作,还包括快捷方式的创建、属性的更改、应用程序的打开等操作。尤其是在移动、复制文件的时候,shfileoperation提供了非常详细的进度信息,让用户可以随时监控操作的进度。
shfileoperation主要用于文件和目录操作的GUI应用程序中,它为用户提供了非常实用的文件和目录操作方式
支持并发操作:shfileoperation可以同时执行多个文件和目录的操控操作,并保持稳定性和正确性
需要: #include "commdlg.h"
SHFILEOPSTRUCT结构说明
SHFILEOPSTRUCT结构说明 typedef struct _SHFILEOPSTRUCT { HWND hwnd; 父窗口句柄, 0为桌面 UINT wFunc; wFunc; 功能标识 FO_COPY 复制 FO_DELETE 删除 FO_MOVE 移动 FO_RENAME 重命名 PCZZTSTR pFrom; 源文件或者源文件夹 PCZZTSTR pTo; 目的文件或文件夹,可以是多个文件 FILEOP_FLAGS fFlags; 控制文件的标志位 FOF_ALLOWUNDO 准许撤销,允许放回收站 FOF_CONFIRMMOUSE 没有被使用,,, FOF_FILESONLY 通配符的文件名( *.* )只对文件(不是文件夹)进行操作 FOF_MULTIDESTFILES 【pTo成员指定多个目标文件(pFrom中的每个源文件一个) 而不是存放所有源文件的一个目录】 FOF_NOCONFIRMATION 不出现任何对话框 FOF_NOCONFIRMMKDIR 创建文件夹的时候不用确认 FOF_NO_CONNECTED_ELEMENTS Version 5.0适用,,不移动连接文件(connected files),只移动特定文件 FOF_NOCOPYSECURITYATTRIBS Version 4.71适用,,复制移动文件的时候不复制安全属性,而是为文件指定新的安全属性 FOF_NOERRORUI 如果发生错误, 不要显示对话框给用户 FOF_NORECURSEREPARSE 没有被使用 FOF_NORECURSION 不递归目录 FOF_NO_UI Windows Vista中,默默的进行操作,不给用户呈现任何UI 这相当于FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI|FOF_NOCONFIRMMKDIR FOF_RENAMEONCOLLISION 移动复制的时候如果名字重名,自动分配新名字 FOF_SILENT 不显示进度条提示框 FOF_SIMPLEPROGRESS 显示一个进度条,但不显示单个文件名 FOF_WANTMAPPINGHANDLE 如果指定了FOF_RENAMEONCOLLISION,说明此时是在重命名, 分配一个名称映射对象,其中包含他们的旧的和新的名字到hNameMappings成员。 如果不再使用,需要用SHFreeNameMappings释放。 FOF_WANTNUKEWARNING 当一个文件被永久删除的时候,弹出警告框 BOOL fAnyOperationsAborted; 是否可被中断 LPVOID hNameMappings; 文件映射名字,可在其它 Shell 函数中使用 PCTSTR lpszProgressTitle; 只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题 } SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;
复制文件
SHFILEOPSTRUCT shfo; ZeroMemory(&shfo, sizeof(shfo)); shfo.hwnd = HWND_DESKTOP; shfo.fFlags = FOF_SIMPLEPROGRESS; shfo.wFunc = FO_COPY; //复制 shfo.pFrom = _T("D:\\Test.txt"); shfo.pTo = _T("E:\\"); int n= SHFileOperation(&shfo);//文件操作 /* 参数: _Inout_ LPSHFILEOPSTRUCT lpFileOp 指向SHFILEOPSTRUCT结构的指针 返回值:返回0成功, */ if (0 != n) { AfxMessageBox(_T("复制文件出错,请检查")); return; }
删除文件
SHFILEOPSTRUCT shfo; ZeroMemory(&shfo, sizeof(shfo)); shfo.hwnd = HWND_DESKTOP; shfo.fFlags = FOF_ALLOWUNDO; //允许放回回收站; shfo.wFunc = FO_DELETE;//删除操作 shfo.pFrom = _T("D:\\Test.txt"); shfo.pTo = NULL; //一定要是NULL int n = SHFileOperation(&shfo);//文件操作 /* 参数: _Inout_ LPSHFILEOPSTRUCT lpFileOp 指向SHFILEOPSTRUCT结构的指针 返回值:返回0成功, */ if (0 != n) { AfxMessageBox(_T("复制文件出错,请检查")); return; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2019-08-01 pyqt5-动画组QAnimationGroup