Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ SHFileOperation无法从源文件夹复制所有文件_C++_Windows_Winapi - Fatal编程技术网

C++ SHFileOperation无法从源文件夹复制所有文件

C++ SHFileOperation无法从源文件夹复制所有文件,c++,windows,winapi,C++,Windows,Winapi,最近我遇到了非常奇怪的SHFileOperationWindowsAPI行为(在Windows7操作系统中)。一个简单的C++代码< /P> TCHAR szFrom[_MAX_PATH+1]; _tcscpy(szFrom, From.c_str()); ::PathAppend(szFrom, _T("*.*")); *(szFrom + _tcslen(szFrom) + 1) = 0; TCHAR szTo[_MAX_PATH+1]; _tcscpy(szTo, To.c_str())

最近我遇到了非常奇怪的SHFileOperationWindowsAPI行为(在Windows7操作系统中)。一个简单的C++代码< /P>
TCHAR szFrom[_MAX_PATH+1];
_tcscpy(szFrom, From.c_str());
::PathAppend(szFrom, _T("*.*"));
*(szFrom + _tcslen(szFrom) + 1) = 0;

TCHAR szTo[_MAX_PATH+1];
_tcscpy(szTo, To.c_str());
*(szTo + _tcslen(szTo) + 1) = 0;

// Perform Copy operation
SHFILEOPSTRUCT Op = { GetDesktopWindow(), FO_COPY, szFrom, szTo,
                      FOF_NOCONFIRMMKDIR | FOF_NOCOPYSECURITYATTRIBS, 0, 0, 0 };
int Res = ::SHFileOperation(&Op);
if (Res != 0 || Op.fAnyOperationsAborted)
{
    CString Message;
    Message.Format(_T("Error code = %d"), Res);
    AfxMessageBox(Message, MB_OK | MB_ICONWARNING);
}
仅将部分文件从网络文件夹(“从”参数)复制到本地文件夹(“到”参数)。我尝试了“FOF”标志的所有组合,尝试以管理员身份运行-没有帮助。SHFileOperation的返回代码始终为1223。我还检查了我对网络文件夹的访问权限——我拥有所有必要的权限:读、写、修改和执行

最初,我拥有的窗口句柄为0,并根据在谷歌搜索中找到的某人的建议将其更改为桌面窗口。这里显示的FOF_uu标志也是我试图理解发生了什么的许多变化的结果。复制的文件和创建的子文件夹的数量因试用而异,有时会出现“进度”对话框,有时(很少)甚至会成功复制所有文件。但我从未收到过错误信息

这种行为的原因是什么?有没有克服的办法


PS:我看到了一些类似的问题,但没有人给出清晰的答案。

1223是
错误\u取消了
:“函数提示用户提供附加信息,但用户取消了请求。”不要将桌面窗口设为所有者窗口。首先,您使用的是MFC,所以这个框架可能有一个你需要的类。@RemyLebeau,我知道,但它没有多大帮助。如您所知,我没有取消任何请求,函数也没有任何提示。@DavidHeffernan,我试图为hwnd成员和FOF_no_UI标志一起给出0。我还试图创建一个真正的隐藏所有者窗口。但所有这些都不会改变观察到的行为。