shfileoperation

shfileoperation:是一种外壳函数,用它可以实现各种文件操作,如文件的拷贝、删除、移动等,它只有一个指向SHFILEOPSTRUCT结构的参数。

SHFILEOPSTRUCT结构说明
typedef struct _SHFILEOPSTRUCT {
HWND hwnd;
UINT wFunc;
PCZZTSTR pFrom;
PCZZTSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
PCTSTR lpszProgressTitle;
} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

  hwnd; //父窗口句柄, 0为桌面
wFunc; 功能标识
FO_COPY 复制
FO_DELETE 删除
FO_MOVE 移动
FO_RENAME 重命名
pFrom 源文件或者源文件夹,(source file)
pTo 目的文件或文件夹 (destination)
fFlags 控制文件的标志位
FOF_ALLOWUNDO 准许撤销
FOF_CONFIRMMOUSE 没有被使用,,,
FOF_FILESONLY
通配符的文件名( *.* )只对文件(不是文件夹)进行操作。
FOF_MULTIDESTFILES
The pTo member specifies multiple destination files (one for each source file in pFrom)
rather than one directory where all source files are to be deposited.
(不知道怎么翻译过来,大家体验一下精髓)
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
当一个文件被永久删除的时候,弹出警告框

时间: 2024-10-11 11:46:11

shfileoperation的相关文章

shfileoperation 删除文件 FileDelete(CString strName)

From:http://blog.csdn.net/lvwx369/article/details/41440883 注意:其中namePath 为全局变量 Cstring namePath; BOOL FileDelete(CString strName){ namePath = strName; SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp, sizeof(SHFILEOPSTRUCT)); FileOp.fFlags = FOF_NOCO

Windows API——SHFileOperation——文件操作

1 int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp); 如果执行成功返回0. typedef struct _SHFILEOPSTRUCT { HWND hwnd; //指向发送消息的窗口 UINT wFunc; //执行的操作 LPCTSTR pFrom; //源文件名 LPCTSTR pTo; //目标文件名 FILEOP_FLAGS fFlags; //操作与确认标识 BOOL fAnyOperationsAborted; //操作是否终止 L

SHFileOperation的用法

SHFileOperation的用法 //删除文件或者文件夹bool DeleteFile(char * lpszPath) { SHFILEOPSTRUCT FileOp={0}; FileOp.fFlags = FOF_ALLOWUNDO |   //允许放回回收站      FOF_NOCONFIRMATION; //不出现确认对话框FileOp.pFrom = lpszPath; FileOp.pTo = NULL;      //一定要是NULLFileOp.wFunc = FO_DE

SHFileOperation()函数主要对文件夹的四种操作:复制,删除,移动,重命名

//SHFileOperations的操作,pathFrom接受变量传值时老是出错,手工在字符串后面加2个'\0',就可以了,如果是直接手写路径,微软库自动作此处理了 bool gAppSHFileOperation(const QString& pathFrom, const QString& pathTo, const QString& title, const int flags) { // flags为传入的操作:复制,删除,移动,重命名 TCHAR wcFrom[MAX_

SHFileOperation 解决double-null terminated

void rubyTools::funStrToWstr(string str, wstring& strw) { const char* pData = str.c_str(); int lengt = str.length(); UINT CodePage = 936; DWORD dwNum = MultiByteToWideChar(CodePage, 0, pData, -1, NULL, 0); if (dwNum == 0) { return; } WCHAR* pwText =

windows程序中拷贝文件的选择

最近需要在Windows下拷贝大量小文件(数量在十万级别以上).写了些拷贝文件的小程序,竟然发现不同的选择,拷贝的速度有天壤之别! 现有这样的测试数据:1500+小文件,总大小10M左右.现用不同方法进行拷贝.: 方案1:调用SHFileOperation [cpp] view plain copy BOOL CUtility::CopyFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath) { size_t nLengthFrm = _tcslen(lp

Delphi 的接口机制——接口操作的编译器实现过程(1)

学习COM编程技术也快有半个月了,这期间看了很多资料和别人的程序源码,也尝试了用delphi.C++.C#编写COM程序,个人感觉Delphi是最好上手的.C++的模版生成的代码太过复杂繁琐,大量使用编译宏替代函数代码,让初学者知其然而不知其所以然:C#封装过度,COM编程注定是要与操作系统频繁打交道的,需要调用大量API函数和使用大量系统预定义的常量与类型(结构体),这些在C#中都需手工声明,不够简便:Delphi就简单多了,通过模版创建的工程代码关系结构非常清晰,而且其能非常容易使用API函

[工具类]文件或文件夹xx已存在,则重命名为xx(n)(2)

写在前面 最近一直在弄文件传输组件,其中一个功能就是,在接收端接收文件时,如果文件已经存在了,则对其进行文件名+索引的方式进行自动重命名,之前也写个类似的工具类,总感觉代码太冗余,每回头想想,总觉得心里有疙瘩,下班的时候在地铁上,又想了想,感觉是我把问题想复杂了,遂将今天的思路整理一下,写了一个辅助类,记录在此. 上篇文章 [工具类]文件或文件夹xx已存在,则重命名为xx(n) ReNameHelper代码 1 using System; 2 using System.Collections.G

vc关于文件拷贝

单个文件的拷贝 system  针对单个文件 CopyFile  针对单个文件 /** @file_extension egg: .txt .png **/ void CopyFileToDir(CString source_dir, TCHAR* dest_dir, TCHAR* file_extension) { CString source, dest; source.Format("%s*%s", source_dir, file_extension); dest.Format