我正在使用 C++ 和 native Win32 API 编写程序。我在静默模式下从自解压存档 EXE 创建进程,不向用户显示任何 GUI。但是我想在我的应用程序中显示一个进度条,同时提取 SFX 存档。
我该怎么做?
谢谢。
最佳答案
如果您创建的进程向标准输出生成一些文本输出,那么您可能可以以某种方式解析该输出并显示进度。要知道它是否存在,请在命令行窗口中激活它并观察从中获得的结果。
win32 的 CreateProcess()
允许您将进程的标准输出重定向到管道。这样一来,您就可以收到输出。
如果您正在创建的流程没有以某种方式报告其进度,那么您真的无能为力。您可以尝试在文件大小和提取文件的平均时间之间想出一个函数,然后伪造一个进度条。这将有助于让用户放心,但仅此而已。
--编辑
对 CreateProcess()
的调用会在进程创建后立即返回。 CreateProcess()
使用它创建的进程的句柄填充结构 PROCESS_INFORMATION
。它包含进程主线程的句柄。如果您想等待进程完成,您可以在该线程句柄上 WaitForSingleEvent()
,当线程终止时它会发出信号。不要忘记 CloseHandle()
处理完这些句柄。
关于c++ - 在提取 SFX 存档时显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2855750/