使用SHFileOperation错误复制文件夹

时间:2016-07-13 16:06:08

标签: c++

我正在尝试使用SHFileOperation将文件夹中的文件(只有文件,没有递归)复制到子文件夹。我有以下代码失败,SHFileOperation返回1223我得到一个窗口,只有一个取消按钮说:

  

“目标文件夹是源文件夹的子文件夹。”

bool CopyFolder(std::string source, std::string destination)
{
            SHFILEOPSTRUCTA sf;

            source.append(1, '\0');
            destination.append(1, '\0');

            sf.hwnd = GetDesktopWindow(); //Temporary just so I can see any messages
            sf.pFrom = source.c_str();
            sf.pTo = destination.c_str();
            sf.wFunc = FO_COPY;
            sf.fFlags = FOF_NORECURSION | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR | FOF_SILENT;

            int result = SHFileOperation(&sf);

            if (result == 0)
            {
                return true;
            }

            std::cout << "Error: " << result << std::endl;

            return false;
}

现在,如果我对我设置fFlags的行进行注释,它会成功运行,所有文件/文件夹都会复制到子文件夹中。有没有人知道它是你没有设置时使用的默认标志,或者如何在设置我想要的标志时避免这个错误,即只复制文件?

0 个答案:

没有答案