各位程序員您好,我在C++程序中遇到了一些控制檯應用程序的問題,我的目標如下。Windows C++ CMD窗口切換
- 創建第一個CMD窗口。
- 執行命令。 (系統(「打印一些錯誤文本」);)
- 創建第二個CMD窗口。
- 將系統(...)重點更改爲第二個CMD窗口。
- 執行命令。
- 將系統(...)重點更改爲第一個CMD窗口。
- 執行命令。
所有這一切的最終目標是創建將由一個CMD應用程序,將產生另一個CMD窗口中執行的功能,就可以執行一個命令,然後將焦點返回到原來的CMD窗口繼續執行其他代碼。我不需要跟蹤窗口,或者能夠返回到窗口。只需創建新窗口,將焦點切換到該窗口,執行命令,將焦點返回到原始窗口。
- 第一CMD窗口中的應用程序啓動時創建。
- 使用system(...)對此窗口執行命令;工作正常。
我創建
HWND new_hWnd = NULL; ShellExecute(new_hWnd, "open", "cmd.exe", NULL, NULL, SW_SHOW);
- 第二CMD窗口這是我有問題,我一直沒能重定向系統(...),以不同的CMD窗口,這就是我的一部分需要幫助,因爲如果我能解決這個問題,那麼步驟5,6和7將很容易完成。
我已經嘗試過在線研究,並且遇到了一些使用「管道」的不同示例,但一直未能重新創建它們或理解它們。另外,我注意到有一個返回的句柄當前CMD窗口,這對我來說有點信號,應該有使用手柄CMD窗口之間切換的方式與
GetConsoleWindow();
功能,但因爲我沒有切換焦點到另一個CMD窗口我無法調用該函數來獲取它的句柄。
那麼,我該如何讓系統(...)針對不同的帶有句柄的CMD窗口?如果這是不可能的,我該如何實現這個「管道」系統。
如果解決方案是後者,請儘量做到儘可能詳細和簡單,因爲我在網上找到的每個示例都非常大,難以理解/理解。
如果沒有簡單的方法來實現「管道」,那麼請張貼或指向我最好的東西(這將有助於我瞭解管道如何工作)的例子,你可以找到,我會繼續使用它,直到我認爲它出。先謝謝你!
不能使用的ShellExecute(..., 「CMD」,...)以定位不同的控制檯窗口。而是看看AllocConsole。 – 2013-03-27 13:33:38
AllocConsole不適用於我,因爲爲了調用它,我首先需要調用FreeConsole,它關閉了我需要繼續運行的初始控制檯窗口。兩個控制檯窗口都需要保持打開狀態,原始狀態和新創建的狀態。 – user2115945 2013-03-27 18:35:26