2013-12-15 60 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开始另一个过程。将管道的读取端作为新的进程标准输入。写入管道的写入端。如果您需要捕获标准输出,请反过来执行相同操作。