请教:关于SHFileOperation复制多个文件的问题!

shen_wei CSDN大学 软件工程师  2011-09-27 02:18:02
现在用CStringArray获取到一系列的文件夹目录,
例如:
C:\1\1.jpg
C:\1\1.jpg
C:\2\1.jpg
C:\2\1.jpg
C:\3\1.jpg
C:\3\1.jpg
...这样的目录,这些是源文件目录。。

文件目标目录:
D:\a\1\1.jpg
D:\a\1\1.jpg
D:\a\2\1.jpg
D:\a\2\1.jpg
D:\a\3\1.jpg
D:\a\3\1.jpg
...
注意,各个文件的大小是不固定的。。

1.用SHFileOperation函数, 如何实现这些文件 “多VS多” 复制。

2.如何知道这些文件复制时总体时间,复制速度是多少?

...全文
205 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shen_wei 2011-09-28
[Quote=引用 5 楼 visualeleven 的回复:]
使用SHFileOperation函数的时候注意一下double-null terminated的问题
[/Quote]

这个已经做了。。

单击按钮 ,第一次不能复制,在单击一次,就可以完全复制了。。

奇怪就在这里。。
回复
zwfgdlc 2011-09-27
楼上说得不错,文件路径要注意。
回复
Eleven 2011-09-27
使用SHFileOperation函数的时候注意一下double-null terminated的问题
回复
shen_wei 2011-09-27
现在有个怪的问题,SHFileOperation 可以复制多个文件夹了,

但是程序第一次复制时,SHFileOperation 的返回值是 1026
GetLastError() 返回值是6 句柄无效

第一次在操作文件夹复制,就完全可以复制了,只有程序不关闭,怎么复制都可以,不知道为啥第一次不成功,debug看不出问题。。


SHFILEOPSTRUCT lpsh;
ZeroMemory(&lpsh,sizeof(SHFILEOPSTRUCT));
//lpsh.hwnd = NULL;
//lpsh.hNameMappings = NULL;
//lpsh.lpszProgressTitle = NULL;
lpsh.fFlags = FOF_NOCONFIRMATION | FOF_MULTIDESTFILES |FOF_NOERRORUI;//|FOF_FILESONLY|FOF_NOCONFIRMMKDIR ;
lpsh.wFunc = FO_COPY; // FO_MOVE 则是移动
lpsh.pFrom = pFrom;
lpsh.pTo = pTo;
nlen = SHFileOperation(&lpsh);

现在很是郁闷!不知道为啥第一次不成功。。。
回复
oyljerry 2011-09-27
只能一个一个目录拷贝

进度可以先计算总的文件大小,个数等,然后周期性获得当前已经复制的个数,大小,然后计算一个大概的进度就可以了。
回复
shen_wei 2011-09-27
高人谁来解决下。。。
回复
ljn398431 2011-09-27
帮顶下
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2011-09-27 02:18
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……