c++ - 在提取 SFX 存档时显示进度条

标签 c++ winapi progress-bar sfx

我正在使用 C++ 和 native Win32 API 编写程序。我在静默模式下从自解压存档 EXE 创建进程,不向用户显示任何 GUI。但是我想在我的应用程序中显示一个进度条,同时提取 SFX 存档。

我该怎么做?

谢谢。

最佳答案

如果您创建的进程向标准输出生成一些文本输出,那么您可能可以以某种方式解析该输出并显示进度。要知道它是否存在,请在命令行窗口中激活它并观察从中获得的结果。

win32 的 CreateProcess() 允许您将进程的标准输出重定向到管道。这样一来,您就可以收到输出。

如果您正在创建的流程没有以某种方式报告其进度,那么您真的无能为力。您可以尝试在文件大小和提取文件的平均时间之间想出一个函数,然后伪造一个进度条。这将有助于让用户放心,但仅此而已。

--编辑
CreateProcess() 的调用会在进程创建后立即返回。 CreateProcess() 使用它创建的进程的句柄填充结构 PROCESS_INFORMATION。它包含进程主线程的句柄。如果您想等待进程完成,您可以在该线程句柄上 WaitForSingleEvent(),当线程终止时它会发出信号。不要忘记 CloseHandle() 处理完这些句柄。

关于c++ - 在提取 SFX 存档时显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2855750/

相关文章:

c++ - 二维数组和 for 循环的问题

java - Java 和 C++ 中的整数到字节

winapi - CopyIcon() 与 DuplicateIcon()?

visual-studio-2008 - Windows 是否在应用程序中预加载 ComCtrl32.dll?

javascript - 4个JS管理进度条

c++ - 收到错误 : no match for operator[] in

c++ - 将二进制文件多次读入结构 C++

c++ - 如何等待进程完成 C++

php - 如果图像标签是从数据库动态创建的,我如何使用 javascript 或 php 来确定何时加载图像?

javascript - Bootstrap 进度条编程运行时