【发布时间】:2018-04-14 22:07:34
【问题描述】:
我想打开一个简单的控制台应用程序,如下所示:
static void Main(string[] args)
{
Console.WriteLine("Beginning");
string smth = Console.ReadLine();
Console.WriteLine("End");
}
感谢Process.Start,我以这样的形式打开它:
private void button1_Click(object sender, EventArgs e)
{
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.FileName = myexe;
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
processInfo.RedirectStandardOutput = true;
processInfo.RedirectStandardInput = true;
processInfo.StandardOutputEncoding = Encoding.GetEncoding(850);
Process process = new Process();
process.StartInfo = processInfo;
process.Start();
}
我设法使用StreamReader 读取输出并将其放入文本框:
Beginning
End
但问题是程序不会在Console.ReadLine() 等待,就像它被忽略一样。而且我不知道如何让用户从键盘输入(最好直接在控制台中)。
有办法吗?
编辑
好像我说的不够清楚,抱歉。
我正在尝试制作一个简单的表单,无控制,能够在我扫描条形码时“做出反应”。
基本上,我希望控制台应用程序在后台运行,因此当我的条形码被扫描时,我可以将其作为我的output 值:
- 表格“请扫描您的条形码”
- 控制台应用程序已启动
- 条码已扫描
- 控制台应用关闭
- 条形码为
output值
所以StandardInput 似乎不能解决我的问题。
这就是为什么我要问你是否有办法实现这一目标。
【问题讨论】:
-
好吧,您将
RedirectStandardInput设置为true,所以现在控制台应用程序会期望您向它提供输入,而不是通过键盘获取它。
标签: c# .net winforms console barcode