vc 对文件夹的操作 SHFileOperation()的使用
2010-04-06 12:41
246 查看
SHFileOperation()函数主要对文件夹有四种操作:复制,删除,移动,重命名。 挤时间对这个函数进行了利用了一下。写了四个函数。可以很好的对文件夹进行操作。 ///////////////////////////////////// //函数名:DeleteFolder //输入参数:LpszPath 要删除的路径指针 //作用:删除指定文件夹以及里面的文件 // ///////////////////////////////////// BOOL DeleteFolder(LPCTSTR lpszPath) { int nLength = strlen(lpszPath); char *NewPath = new char[nLength+2]; strcpy(NewPath,lpszPath); NewPath[nLength] = '/0'; NewPath[nLength+1] = '/0'; SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT)); FileOp.fFlags = FOF_NOCONFIRMATION; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = NewPath; FileOp.pTo = NULL; FileOp.wFunc = FO_DELETE; return SHFileOperation(&FileOp) == 0; } ///////////////////////////////////// //函数名:CopyFolder //参数:lpszFromPath 源文件夹的路径 。 lpszToPath 目的文件夹的路径 //作用:拷贝文件夹及其文件夹中的所有内容 // ////////////////////////////////////// BOOL CopyFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath) { int nLengthFrm = strlen(lpszFromPath); char *NewPathFrm = new char[nLengthFrm+2]; strcpy(NewPathFrm,lpszFromPath); NewPathFrm[nLengthFrm] = '/0'; NewPathFrm[nLengthFrm+1] = '/0'; SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT)); FileOp.fFlags = FOF_NOCONFIRMATION ; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = NewPathFrm; FileOp.pTo = lpszToPath; FileOp.wFunc = FO_COPY; return SHFileOperation(&FileOp) == 0; } ///////////////////////////////////// //函数名:MoveFolder //参数:lpszFromPath 源文件夹路径 。lpszToPath 目的文件夹路径 //作用:移动原文件夹及其中文件都指定的路径下 // ///////////////////////////////////// BOOL MoveFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath) { int nLengthFrm = strlen(lpszFromPath); char *NewPathFrm = new char[nLengthFrm+2]; strcpy(NewPathFrm,lpszFromPath); NewPathFrm[nLengthFrm] = '/0'; NewPathFrm[nLengthFrm+1] = '/0'; SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT)); FileOp.fFlags = FOF_NOCONFIRMATION ; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = NewPathFrm; FileOp.pTo = lpszToPath; FileOp.wFunc = FO_MOVE; return SHFileOperation(&FileOp) == 0; } ///////////////////////////////////// //ReNameFolder //参数:lpszFromPath 源文件夹路径 。lpszToPath 目的文件夹路径 //作用:修改原文件夹的名字。 // ///////////////////////////////////// BOOL ReNameFolder(LPCTSTR lpszFromPath,LPCTSTR lpszToPath) { int nLengthFrm = strlen(lpszFromPath); char *NewPathFrm = new char[nLengthFrm+2]; strcpy(NewPathFrm,lpszFromPath); NewPathFrm[nLengthFrm] = '/0'; NewPathFrm[nLengthFrm+1] = '/0'; SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT)); FileOp.fFlags = FOF_NOCONFIRMATION ; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = NewPathFrm; FileOp.pTo = lpszToPath; FileOp.wFunc = FO_RENAME; return SHFileOperation(&FileOp) == 0; } 这四个函数在VC6.0下通过测试了一下,效果还是有的。不过感觉,FO_RENAME和FO_MOVE有点相似,而且是作用十分相似。如果发现问题请回帖。 |
相关文章推荐
- 对文件夹的操作 SHFileOperation()的使用
- vc使用SHFileOperation()的使用对文件夹的复制,删除,移动,重命名
- VC++中使用ADO方式操作ACCESS数据库(转载)
- VC++下使用ADO编写数据库程序 – 操作大全
- vc中文件对话框和文件夹对话框的使用
- VC++中使用ADO方式操作ACCESS数据库
- VC++下使用ADO操作数据库的智能指针_ConnectionPtr、_RecordsetPtr、_CommandPtr的方法
- (转)使用VC操作Excel 2003(例程)
- GetCurrentDirectory等文件夹操作函数 && MessageBox信息函数 && VC应用执行DOS命令和批处理
- 使用VB或VC操作Excel 2003
- VC中使用ADO操作数据库的方法(比较详细)
- VC++下使用ADO操作数据库的智能指针_ConnectionPtr、_RecordsetPtr、_CommandPtr的方法
- 使用VB或VC操作Excel 2003
- c#中使用api(shfileoperation)进行文件操作,特别详解了回收站相关参数
- VC 删除指定目录(文件夹)-RemoveDirectory使用
- VC/MFC使用OLE操作 EXCEL
- vc中操作Xml--使用CMarkup类
- C#中使用API(SHFileOperation)进行文件操作,特别说明了回收站相关参数
- 在VC中使用安全版字符串操作函数
- [原]使用VC++压缩解压缩文件夹