C ++ Win32 API删除带有进度条的文件

问题描述

| 使用Windows API,有什么方法可以删除文件(让我们说1gb +),并以某种方式监视进度吗?我确定有可能,但我不知道从哪里开始。 编辑:应该更具体一些,我想将文件移到回收站,并显示一个类似于资源管理器的进度条,尽管我可能需要控制台中的进度条之类的东西,所以我不想要确切的副本。 编辑2:是的,猜测是即时的,应该在我问问题之前进行测试。 无论如何只是要结束这个问题?     

解决方法

        将SHFileOperation与
FO_DELETE
函数和
FOF_ALLOWUNDO
标志一起使用,将文件移动到回收站。除非您也指定FOF_SILENT,否则将自动显示进度。
SHFILEOPSTRUCT fileop = { 0 };
fileop.hwnd = hwndMain; /* your window */
fileop.wFunc = FO_DELETE;
fileop.pFrom = szFilePathToDelete;
fileop.fFlags = FOF_ALLOWUNDO /* | FOF_NOCONFIRMATION to recycle without prompting */;
int error = SHFileOperation(&fileop);
更新:如问题编辑中所述,单个文件不会显示进度,但是如果回收整个目录,则会显示进度。这也不允许您覆盖用户界面(例如,在控制台窗口中显示进度)。     ,        也许您可以使用SetEndOfFile逐步截断它? http://msdn.microsoft.com/zh-CN/library/aa365531(v=vs.85).aspx。然后可以快速删除inode(或Windows平台中的任何名称)。 [更新]刚刚测试;其他人是对的。在1gb文件中,立即删除索引节点(删除)。