【发布时间】:2012-02-08 10:22:35
【问题描述】:
我正在尝试将目录复制到新位置。所以我使用 SHFileOperation/SHFILEOPSTRUCT 如下:
SHFILEOPSTRUCT sf;
memset(&sf,0,sizeof(sf));
sf.hwnd = 0;
sf.wFunc = FO_COPY;
dirName += "\\*.*";
sf.pFrom = dirName.c_str();
string copyDir = homeDir + "\\CopyDir";
sf.pTo = copyDir.c_str();
sf.fFlags = FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_NOERRORUI;
int n = SHFileOperation(&sf);
if(n != 0)
{
int x = 0;
}
所以我设置了上面的值。我在文件夹中创建了一个文件(我已经关闭了 Handle,所以应该可以移动)。 SHFileOperation 调用返回 2,但我找不到解释这些错误代码的任何地方。有谁知道我在哪里可以找到 2 的含义,或者有人知道为什么它可能不起作用?干杯
【问题讨论】:
-
SHFileOperation 函数在 Windows Vista 中已被 IFileOperation 替换。那么使用 SHFileOperation 聪明吗?或者代码是否只在
-
是的,我用过 CopyFile 但我想移动一个包含所有文件的目录,我知道 SHFileOperation 只需使用上面的代码就可以做到这一点(或者,你知道,使用上面代码的工作版本) .我不知道 IFileOperation。不过我很好奇。如果我在 Windows 资源管理器中并且我选择使用键盘/鼠标将文件夹复制到其他地方,它会使用这个 IFileOperation 还是 SHFileOperation?