【发布时间】:2010-05-18 08:54:24
【问题描述】:
我正在使用 C++ 和本机 Win32 API 编写程序。我正在以静默模式从 SFX 存档 EXE 创建一个进程,没有向用户显示 GUI。但我想在我的应用程序中显示一个进度条,同时提取 SFX 存档。
我该怎么做?
谢谢。
【问题讨论】:
标签: c++ winapi progress-bar sfx
我正在使用 C++ 和本机 Win32 API 编写程序。我正在以静默模式从 SFX 存档 EXE 创建一个进程,没有向用户显示 GUI。但我想在我的应用程序中显示一个进度条,同时提取 SFX 存档。
我该怎么做?
谢谢。
【问题讨论】:
标签: c++ winapi progress-bar sfx
如果您创建的过程产生了一些文本输出到标准输出,那么您可能会以某种方式解析该输出并显示进度。要知道它是否存在,请在命令行窗口中激活它并观察你从中得到什么。
win32 的CreateProcess() 允许您将进程的标准输出重定向到管道。这样您就可以在生成后立即收到输出。
如果您正在创建的流程没有以某种方式报告其进度,那么您真的无能为力。您可以尝试在文件大小和提取文件所需的平均时间之间提出函数,然后伪造一个进度条。这将有助于让用户放心,但仅此而已。
--编辑
对CreateProcess() 的调用会在进程创建后立即返回。 CreateProcess() 用它创建的进程的句柄填充结构 PROCESS_INFORMATION。它包含进程主线程的句柄。如果您想等待进程完成,您可以在该线程句柄上WaitForSingleEvent(),当线程终止时该句柄会发出信号。完成后不要忘记CloseHandle()这些句柄。
【讨论】: