views:

419

answers:

5

Hi, 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 argc and argv?

Thanks

+1  A: 

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#) ==="

Eric J.
+1  A: 

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();
Kevin Crowell
+2  A: 

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.

Reed Copsey
Thanks, after changing the working directory and setting shell execute to true it worked correctly.Thanks again for the speedy response.
Dan
A: 

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)

jwismar
A: 

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

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

anijhaw