2012-04-25 31 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

相關問題