2012-04-25 58 views
1

我正在编写一个程序,用于启动不同的命令行应用程序。问题是当我运行1个应用程序时,命令提示符接受了程序的控制,并且不允许我访问我的GUI来启动另一个程序。我相信这是因为System()创建了一个新的进程,然后一旦命令提示符退出,控制就返回到GUI。用于启动多个命令提示的C++替代System()。 WINAPI(No MFC)

有什么替代方案可以让我一次启动几个命令行程序吗?比如在一个线程中。

任何帮助,将不胜感激。

::丹

回答

6

使用CreateProcess功能;这会创建一个新的过程,但不会等待它完成。相反,您可以使用WaitForSingleObject函数自己等待。

如果您正在启动多个进程,您可能需要考虑使用WaitForMultipleObjects,它可以让您一次等待整个进程列表(以及其他对象)。

请参阅MSDN上的list of wait functions以了解有关如何等待进程完成的更多选择。

+0

那我该怎么办让我的命令行程序启动? 例如:'system(“start calc.exe”)' – L337BEAN 2012-04-25 14:25:41

+2

如果它是一个正常的程序,只需将路径传递给'CreateProcess()'。如果确实需要命令处理程序,那么您需要使用'/ c'或'/ k'参数运行'cmd.exe'(或'%COMSPEC%')。 – Deanna 2012-04-25 15:25:16

相关问题