1

我正在用 C++ 和本机 Win32 API 编写程序。我正在以静默模式从 SFX 存档 EXE 创建一个进程,没有向用户显示 GUI。但我想在我的应用程序中显示一个进度条,同时提取 SFX 存档。

我怎样才能做到这一点?

谢谢。

4

1 回答 1

1

如果您创建的过程产生一些文本输出到标准输出,那么您可能会以某种方式解析该输出并显示进度。要知道它是否确实如此,请在命令行窗口中激活它并观察你从中得到什么。

win32CreateProcess()允许您将进程的标准输出重定向到管道。这样,您可以在生成输出后立即收到输出。

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

-- Edit
调用CreateProcess()一旦创建就返回。用它创建的进程的句柄CreateProcess()填充结构。PROCESS_INFORMATION它包含进程主线程的句柄。如果您想等待进程完成,您可以WaitForSingleEvent()在线程终止时发出信号的线程句柄上。完成后不要忘记CloseHandle()那些把手。

于 2010-05-18T09:09:07.747 回答