我正在用C ++和本机Win32 API编写程序。我正在以静默模式从SFX存档EXE创建一个进程,没有向用户显示GUI。但我希望在我的应用程序中显示进度条,同时提取SFX存档。
我该怎么做?
感谢。
答案 0 :(得分:1)
如果您创建的进程会为标准输出生成一些文本输出,那么您可以以某种方式解析该输出并显示进度。要知道它是否存在,请在命令行窗口中激活它并观察从中获取的内容。
win32的CreateProcess()
允许您将流程的标准输出重定向到管道。这样,您可以在生成后立即接收输出。
如果您正在创建的流程没有以某种方式报告其进度,那么您可以做的事情真的不多。您可以尝试在文件大小和提取它所需的平均时间之间设置函数,然后假冒进度条。这样做的目的就是让用户放心,但仅此而已。
- 的修改
创建进程后,将立即调用CreateProcess()
。 CreateProcess()
使用它创建的进程的句柄填充结构PROCESS_INFORMATION
。它包含进程主线程的句柄。如果你想等待进程完成,你可以在该线程句柄上WaitForSingleEvent()
,当线程终止时会发出信号。完成后,不要忘记CloseHandle()
这些句柄。