2013-12-15 93 views
1

我試圖爲dos實用程序創建一個GUI包裝應用程序。 當我執行在控制檯的外觀像這樣我的DOS工具的應用程序(dosapp.exe):爲dos實用程序應用程序編寫GUI delphi包裝

------------------------- 
WELCOME 
------------------------ 
What do you want to do? 
1- Type 1 ,For Enter System 
2- Type 2 ,Set Properties 
3- TYpe 3, Exit 
Enter Action: 

在我的Delphi XE3的應用程序,我有三個按鈕,一個用於每個動作和我跑dosapp.exe使用的CreateProcess和管道捕捉反應。

我的問題是如何在控制檯進程中爲我的3個按鈕脈動編寫操作,例如,當用戶單擊按鈕1時,我需要發送到運行創建的進程(dosapp.exe)writeline(「1」)並獲取響應。 我看到了一些C#的例子,當這可以通過使用進程類很容易地執行並調用Process.StandardInput.WriteLine("1")但我不能在delphi上做任何想法或提示。


編輯:最後根據David Heffman解答評論。在評論中提到

+2

這可能是有幫助的:http://stackoverflow.com/questions/2015388/how-to-send-command-to-console-application-from-gui-application –

+3

創建一個管道。確保它的讀取結束是可繼承的。調用CreateProcess來啓動其他進程。將管道的讀取端作爲新的進程標準輸入。寫入管道的寫入端。如果您需要捕獲標準輸出,請反過來執行相同操作。 –

+1

也許第一個也是最重要的問題(但只是因爲你說:「當我執行***我的*** dos實用程序應用程序...」)是問:如果它是***你的***應用程序,做你也有源代碼(即使它是用不同的語言)?我問的原因是,包裝代碼(甚至通過DLL)比包裝可能需要屏幕抓取來解釋您獲得的響應的控制檯用戶界面更容易和更健壯。 –

回答

1

接受的答案:

創建一條管道。確保它的讀取結束是可繼承的。撥打CreateProcess開始另一個過程。將管道的讀取端作爲新的進程標準輸入。寫入管道的寫入端。如果您需要捕獲標準輸出,請反過來執行相同操作。