请教有关 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.

--
...全文
142 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
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);

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧