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

标签 c++ file api winapi delete-file

使用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);

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

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

相关文章:

c++ - 如何将 std::array 转换为 std::tuple?

c++ - 将 std::chrono::system_clock::time_point::min() 转换为字符串时出现无效空指针错误

c++ - Q按钮 : How to know whether a "released" signal will be followed by a "clicked" signal?

html - 从 html 文件中删除 br 标签

.net - 在 C++/.NET 中使用 SqlConnection

java - Android/Eclipse 在插件中打开 MainActivity 之外的文件

file - ASP.Net MVC - 从 HttpPostedFileBase 读取文件而不保存

api - Golang 向 API 的 POST 请求返回 400,而与 e. G。 postman 退回200

python - Google BigQuery API,如何设置destinationTable的字段类型?

java - 尝试使用 Java 将 PDF 上传到 Mendeley 时收到 500 错误