.net 如何运行C++。来自C#的exe文件? 我将从C++应用开始,解释我的确切要求。我有一个C++应用程序,它从控制台(键盘)输入一个输入(一个小的命令叫“run”),在项目中使用任何参数(C++应用程序使用GETCHARE())。问题是,我可以使用Syp.CytCys.Pro从C语言运行exe文件,但是我想在C++程序中输入“run”命令来执行C++应用程序。有可能这样做吗?
是的。您需要重定向生成的进程的输入流,以便可以直接写入:.net 如何运行C++。来自C#的exe文件? 我将从C++应用开始,解释我的确切要求。我有一个C++应用程序,它从控制台(键盘)输入一个输入(一个小的命令叫“run”),在项目中使用任何参数(C++应用程序使用GETCHARE())。问题是,我可以使用Syp.CytCys.Pro从C语言运行exe文件,但是我想在C++程序中输入“run”命令来执行C++应用程序。有可能这样做吗?,.net,c#-4.0,.net,C# 4.0,是的。您需要重定向生成的进程的输入流,以便可以直接写入: // Use ProcessStartInfo class ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = "run.exe"; startInfo.Win
// Use ProcessStartInfo class
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "run.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "-f j ";
try
{
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}
var proc = new Process();
proc.StartInfo.FileName = "program.exe";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardInput = true;
proc.Start();
var sw = proc.StandardInput;
现在,这将写入进程的标准输入,就像您使用键盘键入文本一样:
sw.WriteLine("run something");
最后,当你写完后,别忘了整理一下:
sw.Close();
proc.WaitForExit();
proc.Close();
系统.诊断.过程
有什么问题?这是通常的方法。您可以将C程序的控制台输出重定向到接受run
的程序。但为什么这么复杂呢?你想实现什么?嗨,乔恩。。它可以工作,但问题是,当我使用sw.WriteLine(“运行某物”);它在进程控制台中打印垃圾字符。。因为是打印垃圾字符,所以我错了output@Bhuvan:我们无法调试此代码,尤其是在没有看到代码的情况下。我可以知道,您指的是哪种代码吗?因为我可以和你分享CPP代码,他们在他们的应用程序中没有使用任何编码,因为我猜嗨,JON,是的,这终于起作用了…我很早就关闭了流,这给我带来了问题sw.Close();。。我意识到并解决了我的问题。。但我还有一个疑问,当我使用consoleWindow.RedirectStandardOutput=true时;我能够部分地将输出写入文件。。但是我没能将完整的输出写入文件,我没有得到我正在做的事情。。。还有一件事,我可以在控制台中打印输出并同时将相同的输出写入文件吗