2

我正在尝试创建一个 C# 表单应用程序,它允许我从一个中央程序使用我以前的所有 C++ 程序。

我可以用 . 打开exe Process.Start(),但是它不能正确编译代码。

示例代码:

Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe");

这将调出控制台并表现得好像它正在运行,但它不像我通常从 C++ 编辑器中编译时那样运行。我需要设置一个startinfo变量来表示它是一个 C++ 程序或类似的东西吗?

此外,有没有什么方法可以使用它来执行 C++ 程序process.start,这将允许我通过命令行通过argc和传递变量argv

谢谢

4

5 回答 5

5

当您使用 Process.Start 的方式与您直接执行程序时,只有几个不同之处。两者都可以通过使用ProcessStartInfo来解决。

  1. 工作目录将不一样。将此设置为包含可执行文件的路径以获得相同的行为。
  2. UseShellExecute设置为 true,以便使用 windows shell 来执行进程。

至于添加命令行参数:您可以通过ProcessStartInfo.Arguments来完成。但是,由于它是 C++ 应用程序,因此不需要它。

于 2010-03-26T20:27:28.043 回答
1

到目前为止,只有足够的信息来回答您的最后一个问题。是的,您可以包含命令行参数,如此处所示。查看标题为“=== 运行 EXE (C#) 的程序 === 的部分”

于 2010-03-26T20:26:13.677 回答
1

添加命令行参数:

Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();
于 2010-03-26T20:26:36.673 回答
0

程序被编译成 EXE 后,用什么语言编写就无关紧要了。

至于程序参数,您需要查看 ProcessStartInfo 类,以及使用它的 Process.Start() 的覆盖:Process.Start(ProcessStartInfo)

于 2010-03-26T20:28:25.547 回答
0

我在 python 中遇到了类似的问题,你期待详细的输出吗?

在我的情况下,输出缓冲区已满,因此执行停止。

于 2010-03-26T20:29:49.807 回答