开发者

Execute C++ exe from C# form using Process.start()

开发者 https://www.devze.com 2022-12-25 00:16 出处:网络
I\'m trying to create a C# form app that will allow me to use all of my previous C++ programs from one central program.

I'm trying to create a C# form app that will allow me to use all of my previous C++ programs from one central program.

I'm able to open the exes with Process.Start(), however it does not compile the code correctly.

Example code:

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

This will bring up the console and act like it's running, but it does not run like when I normally compile out of the C++ editor. Is there a startinfo variable I need to set to signify that it's a C++ program or something along that line?

Also, is there any way to execute a C++ program using process.start that will allow me to pass it variables through the command line via a开发者_如何转开发rgc and argv?

Thanks


There are only a couple of differences when you use Process.Start the way you did vs. when you just execute the program directly. Both can be addressed by using ProcessStartInfo.

  1. The WorkingDirectory will not be the same. Set this to the path containing the executable to get the same behavior.
  2. Set UseShellExecute to true, so the windows shell is used to execute the process.

As for adding command line arguments: You can do that via ProcessStartInfo.Arguments. There shouldn't be one required due to it being a C++ application, however.


So far there's only enough info to answer your final question. Yes, you can include command line arguments as shown here. Look at the section titled "=== Program that runs EXE (C#) ==="


To add command line arguments:

Process process = new Process();
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe";
process.StartInfo.Arguments = ""; // Put your arguments here
process.Start();


After the program has been compiled into an EXE, it shouldn't matter what language it was written in.

As for the program arguments, you need to take a look at the ProcessStartInfo class, and the override of Process.Start() that uses it: Process.Start(ProcessStartInfo)


I faced a similar problem in python, are you expecting verbose output?

In my case the output buffer got full and hence execution stalled.

0

精彩评论

暂无评论...
验证码 换一张
取 消