请教有关 SHFileOperation 函数 问题

wuwenxunzy 2004-06-18 03:13:00
我用的是VC6.0 代码如下:

SHFILEOPSTRUCT struFILE;
pFrom="f:\\ftp\\new\\"+txtSel;
pTo="f:\\ftp\\Upload\\"+txtSel;
int hr;

struFILE.wFunc=FO_MOVE;
struFILE.pFrom=pFrom;
struFILE.pTo=pTo;
hr=SHFileOperation(&struFILE);

编译执行均无出错信息.就是不能成功执行SHFileOperation函数. 因为返回值hr为非0.

--
...全文
96 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lattice 2004-07-21
不好意思,是应该文件名后面跟几个0,呵呵
回复
lattice 2004-07-21
告后来者:

FileOp.pFrom = "C:\\temp\\extract";//GetExtractFullPath();
FileOp.pTo = "C:\\temp\\mmm";
这样就会出错!
下面这样,先把目录名拷贝到一个数组里面就可以了!!
FileOp.pFrom = szFrom;//GetExtractFullPath();
FileOp.pTo = szTo;

看来SHFileOperation(&fo)要修改目录名里面的内容,字符常量就不行了!
靠!
回复
CsdnRob 2004-07-01
up
回复
CsdnRob 2004-07-01
up
回复
lixiaosan 2004-06-18
char buf[256];
char buf1[256];
SHFILEOPSTRUCT fo;

memset(buf, 0, sizeof(buf));
memset(buf1, 0, sizeof(buf1));
memset(&fo, 0, sizeof(fo));
strcpy(buf, "f:\\source");
strcpy(buf1, "f:\\target");
fo.wFunc = FO_MOVE;//复制则是FO_COPY
fo.pFrom = buf;
fo.pTo = buf1;
fo.Flags = FOF_SIMPLEPROGRESS;
SHFileOperation(&fo);
回复
lianglp 2004-06-18
个人认为如果不需要对话框显示的话大可以用copyfile()或movefile()
如果要显示进度窗口就用SHFileOperation操作吧
回复
ks2 2004-06-18
jiangsheng(蒋晟.MSMVP2004Jan说得对
两个0,remark说得很清楚的
回复
会思考的草 2004-06-18
直接用CopyFile或者MoveFile不就得了?
回复
wuwenxunzy 2004-06-18
路径当然是正确的!!
-------------------------------------------

还有,
pFrom,pTo 为CString 类型申明的.应该没问题吧??

SHFILEOPSTRUCT定义如下(MSDN):

typedef struct _SHFILEOPSTRUCT{
HWND hwnd;
UINT wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;

回复
蒋晟 2004-06-18
文件名列表之间用\0间隔,最后用两个\0结束。你的问题是结束的位置只用了一个\0
回复
carbon107 2004-06-18
struFILE.wFunc=FO_MOVE; 也应可以啊,你确信路径是正确的吗?
回复
carbon107 2004-06-18
char strSrc[]="c:\\dos\0c:\\pwin98\\command\0";
//可以改变源路径
char strDst[]="c:\\temp\0";
//设置目的路径
char strTitle[]="File copying";
回复
carbon107 2004-06-18
你要实现copy功能吧

SHFILEOPSTRUCT FileOp;
FileOp.hwnd=m_hWnd;
FileOp.wFunc=FO_COPY;
//执行文件拷贝
FileOp.pFrom=strSrc;
FileOp.pTo=strDst;
FileOp.fFlags=FOF_ALLOWUNDO;
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle=strTitle;

nOk=SHFileOperation(&FileOp);
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-06-18 03:13
社区公告

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