SHFileOperation 这个API函数怎么用起来结果飘忽不定?
// 将原路径srcDir中的文件/文件夹(不包括srcDir本身),拷贝到目标路径desDir下,存在的话覆盖
bool copyForder(const char * srcDir,const char *desDir)
{
SHFILEOPSTRUCT fop;
ZeroMemory(&fop, sizeof(fop));
fop.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR |FOF_MULTIDESTFILES;
fop.wFunc = FO_COPY;
fop.pFrom = _T(srcDir);
fop.pTo = _T(desDir);
int nResult = SHFileOperation(&fop);
if(0 == nResult)
{
return true;
}
return false;
}测试代码如下:
string src="D:\\source\\";
string des = "D:\\dest\\aaa\\";
if(!copyForder(src.c_str() ,des.c_str()))
printf("文件夹拷贝失败!\n");
else
printf("文件夹拷贝成功!\n");好像文件夹路径最后加不加那个斜杠会影响结果?之前试的时候从source往dest中复制的话怎么折腾都成功,现在往dest下的aaa文件夹里放感觉有时候就会失败,nResult返回值有时候是123,有时候是87,有墙,还查不到更多的信息,有时候复制成功但是又吧source本身都复制过去了,好混乱啊,到底怎么正确使用呢?相关推荐
PB使用SHFileOperation函数复制文件夹(文件)API
在工作中遇到的问题,结合网上的各方资料现整理出此脚本! 此脚本在PB环境中已经测试通过,请放心使用,如有疑问请密我!
SHFileOperation文件操作
SHFileOperation文件操作
VC 移动,复制,删除文件(SHFileOperation)总集
VC 移动,复制,删除文件(SHFileOperation) 技术汇总
vb SHFileOperation 实现复制文件夹 示例源码
API功能详解: 使用API函数SHFileOperation,这个函数可以同时拷贝、删除、改名或移动多个文件,甚至整个目录。如果你愿意,还可以显示相应的动画对话框,功能十分强大。SHFileOperation的参数是一个SHFILEOPSSTRUCT结构。这个结构中各成员的含义如下: - hwnd - 显示文件操作对话框的窗口句柄 - wFunc - 表示要进行的操作,可以取以下值: - FO_COPY - 拷贝文件。所要拷贝的文件由pFrom成员指定,目的地址有pTo成员指定。 - FO_DELETE - 删除pFrom指定的文件。(pTo 被忽略。) - FO_MOVE - 移动文件。所要移动的文件由pFrom成员指定,目的地址有pTo成员指定。 - FO_RENAME - 改名pFrom指定的文件。 - pFrom - 指定文件名的缓冲区的地址。必须以Chr(0)结尾。如果包括多个文件以Chr(0)分割。 - pTo - 指定目的文件名或目录的缓冲区的地址。必须以Chr(0)结尾。如果使用了FOF_MULTIDESTFILES标志,可以包括多个文件名,文件名之间以Chr(0)分割。 - fFlags - 标志: - FOF_ALLOWUNDO - 允许恢复 - FOF_FILESONLY - 如果使用了*.*,只操作文件。 - FOF_MULTIDESTFILES - pTo成员可以为多个目的文件。 - FOF_NOCONFIRMATION - 不显示确认对话框。 - FOF_NOCONFIRMMKDIR - 不确认是否建立目录。 - FOF_NOERRORUI - 如果有错误,不显示用户界面。 - FOF_RENAMEONCOLLISION - 如果目的文件已经存在,给要处理的文件一个新名字。 - FOF_SILENT - 不显示进度对话框。 - FOF_SIMPLEPROGRESS - 显示进度框,但不显示文件名。 - fAnyOperationsAborted -如果用户退出,该成员为TRUE,否则为FALSE。 - lpszProgressTitle - 进度框的标题,只有选择了FOF_SIMPLEPROGRESS标志才有效。
调用 SHFileOperation 函数实现复制文件或删除到回收站(6KB)...
调用 SHFileOperation 函数实现复制文件或删除到回收站(6KB)


