SHFileOperation pFrom常量可以,变量出错

80 篇文章 2 订阅

环境:win7 32 日文版,vs2005

错误代码:

SHFILEOPSTRUCT fileOp;
memset(&fileOp, 0, sizeof(SHFILEOPSTRUCT));
fileOp.wFunc = FO_DELETE;
fileOp.fFlags = ( FOF_NOCONFIRMATION);
fileOp.lpszProgressTitle = msgTitle;
char path2[MAX_PATH];
strcpy_s(path2, sizeof(path2), "H:\\IMG\\*.*");

fileOp.pFrom = path2;
if(SHFileOperation(&fileOp) != 0){	// ERROR
	CString msg;
	CString msgTitle;
	msg.Format(_T("删除失败"));
	MessageBox(msg, msgTitle, MB_ICONSTOP | MB_OK);
	return;
}
上面代码中SHFileOperation返回124,并且删除失败

但是如果改成

fileOp.pFrom = "H:\\IMG\\*.*";

则返回0,并且删除成功

百度,网上说pFrom的文件列表需以\0\0结尾,而文件之间以\0结尾,故如果是变量路径,需改为

strcpy_s(path2, sizeof(path2), "H:\\IMG\\*.*");
memset(path2+strlen(path2), 0, MAX_PATH-strlen(path2));
fileOp.pFrom = path2;
参考:

http://bbs.eyuyan.com/simple/?t92127.html

http://bbs.csdn.net/topics/50439584

http://bbs.csdn.net/topics/50081174

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值