为什么SHFileOperation()在windows2000下面无法用来删除文件?

alphapaopao 2002-12-25 07:27:50
调用之后就会报告错误,文件没有被删除掉?
用什么函数删除文件比较合适?
...全文
77 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
deverxp 2002-12-26
  • 打赏
  • 举报
回复
sfs.hwnd = this->m_hWnd;
sfs.fFlags = FOF_SIMPLEPROGRESS;
sfs.fAnyOperationsAborted = true;
sfs.hNameMappings = NULL;
sfs.lpszProgressTitle = "删除文件";
sfs.pFrom = "e:\\b";
sfs.pTo = NULL;
sfs.wFunc = FO_DELETE;

SHFileOperation(&sfs);


COPY这段代码,W2K下用过,绝对可行

更多内容请访问我的个人技术站点---vc知识库 PLUS
http://dever.6to23.com

alphapaopao 2002-12-26
  • 打赏
  • 举报
回复
pFrom
Address of a buffer to specify one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated.

唉,气死人啊,没有看仔细,人家说要 double null-terminated ,呵呵
alphapaopao 2002-12-26
  • 打赏
  • 举报
回复
改成这样,终于好了,呵呵,太棒了,楼上的老大,多谢了

strcpy(pszPath, (LPCTSTR)str);
pszPath[strlen(pszPath)+1] = 0;
fop.pFrom = pszPath;
bcb_fans 2002-12-26
  • 打赏
  • 举报
回复
容易!!!

更改:

fop.pFrom = (LPCTSTR)str;

为:

fop.pFrom = (LPCTSTR)(str + "\0");
alphapaopao 2002-12-26
  • 打赏
  • 举报
回复
已经贴出来了,上面就是
RomanticProgrammer 2002-12-26
  • 打赏
  • 举报
回复
不会吧..怎么会呢.把呢的代码贴出来看看
////////////////////////////////////////
DeleteFile 函数也可以删除文件,但是不会放到回收站里,直接删除.
alphapaopao 2002-12-26
  • 打赏
  • 举报
回复
对话框提示,“无法读原文件或磁盘”
同样的程序在NT上面好使得。
alphapaopao 2002-12-26
  • 打赏
  • 举报
回复
int nSize = m_config.GetObjNum();

SHFILEOPSTRUCT fop;
memset(&fop, 0, sizeof(fop));
fop.hwnd = GetSafeHwnd();
fop.wFunc = FO_DELETE;
fop.fFlags = FOF_SIMPLEPROGRESS;
fop.fAnyOperationsAborted = 1;
fop.lpszProgressTitle = "删除文件";
fop.hNameMappings = 0;
fop.lpszProgressTitle = 0;
fop.pTo = NULL;

Output("exterminating...\r\n");

CString str, strOut;
int i, nRet;
for(i=0; i<nSize; i++)
{
str = m_config.GetFullObj(i);

if(PathFileExists(str))
{
Output("删除 -> ");
Output(str);
Output("\r\n");

fop.pFrom = (LPCTSTR)str;
nRet = SHFileOperation(&fop);
// nRet = DeleteFile(str);

if(nRet)
{
strOut.Format("Error %d -> %s\r\n", nRet, (LPCTSTR)str);
Output((LPCTSTR)strOut);
}
}
// else
// {
// Output("------不存在 -> ");
// Output(str);
// Output("\r\n");
// }
}

Output("Finished!\r\n");
alphapaopao 2002-12-25
  • 打赏
  • 举报
回复
有没有试过在w2k下面能不能用阿?
masterz 2002-12-25
  • 打赏
  • 举报
回复
http://www.vckbase.com/vckbase/vckbase10/vc/nonctrls/shellpro_27/1027001.htm

16,472

社区成员

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

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

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