使用Windows API,有什么方法可以删除大文件(比如说1gb +)并以某种方式监视进度吗?我确定它是可能的,但我不知道从哪里开始。

编辑:应该更具体一些,我想将文件移到回收站,并显示一个类似于资源管理器的进度条,尽管我可能需要控制台中的进度条之类的东西,所以我不希望有确切的副本。

编辑2:是的,猜测是即时的,应该在我问问题之前进行测试。
无论如何只是要结束这个问题?

最佳答案

SHFileOperationFO_DELETE func和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);

更新:如问题编辑中所述,单个文件不会显示进度,但是如果回收整个目录,则会显示进度。这也不允许您覆盖用户界面(例如,在控制台窗口中显示进度)。

关于c++ - C++ Win32 API删除带有进度条的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6339348/

10-09 16:00