2012-10-10 30 views
1

這是一個相當複雜的程序,請耐心等待我! 概念是直截了當無論如何:我將如何遷移到C中的新進程?

我有根據用戶輸入生成一個批處理文件,並執行它的C程序。在所有情況下,批處理文件都會打開一個新的終端。我希望我的程序通過新終端執行set命令。

我99%肯定的,我需要使用此Win32 API的和我與承擔這一挑戰完全正常,但我只是想在正確的方向一點點微調。

一個將如何去設計這樣的方案有什麼建議?

非常感謝您的時間!

+0

如果您的程序正在生成批處理文件,爲什麼還需要將數據輸入到標準輸入?難道它只是把它放在批處理文件中嗎? – Deanna

+0

否。需要通過新終端執行這些命令。 – Koan

+0

我覺得你很困惑。您應該很高興能夠將您的命令編碼到批處理文件中,並在新進程中啓動批處理文件。無論如何,執行一個批處理文件確實會在新終端中運行它們,你只會放慢這個過程。 –

回答

0

最簡單的方法是SendMessage消息(WM_CHAR)到新的控制檯窗口,但它是不是證明錯誤。

正確的方法是給CreateProcess()與STARTF_USESTDHANDLES標誌。查看示例here

+0

優秀的鏈接,謝謝! – Koan

1

當您使用CreateProcess()啓動批處理腳本時,可以爲標準輸入和標準輸出指定使用CreatePipe()創建的自定義管道。這將允許您的應用程序通過在管道上發送任何命令來控制應用程序。

如果只指定標準輸入管道,那麼輸出仍將發送到自己的控制檯窗口。

+0

謝謝你,這看起來很有希望。我會看到發展。 – Koan

相關問題