Start a console application:
System.Diagnostics.Process aspProcess = null;
private void start_console_app()
{
try
{
string pathToExe = @"<<Path to the exe >> ";
if (aspProcess == null)
{
aspProcess = new System.Diagnostics.Process();
}
//Path and file name of command to run
aspProcess.StartInfo.FileName = pathToExe;
aspProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
//Parameters to pass to program
aspProcess.StartInfo.Arguments = "<<arguments you want to pass>>";
aspProcess.StartInfo.UseShellExecute = true;
aspProcess.StartInfo.CreateNoWindow = true;
//Start the process
aspProcess.Start();
//Wait for process to finish
aspProcess.WaitForExit();
aspProcess = null;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
1. For starting a console application, you would need to create an object of class "System.Diagnostics.Process".
2. "FileName" is the path of the exe (console application).
3. "Arguments" - It will send arguments to your console application.
4. ProcessWindowStyle.Hidden will hide the console window.
5. Start () method will start the process.
Stop a console application by sending "Control + C" Signal:
public void stop_console_app()
{
// Release the current console, as you cannot attach 2 consoles at the same time
if (aspProcess != null)
{
uint pid = (uint)aspProcess.Id;
FreeConsole();
// This does not require the console window to be visible.
if (AttachConsole(pid))
{
// Disable Ctrl-C handling for our program
SetConsoleCtrlHandler(null, true);
GenerateConsoleCtrlEvent(CtrlTypes.CTRL_C_EVENT, 0);
// Must wait here. If we don't and re-enable Ctrl-C
// handling below too fast, we might terminate ourselves.
Thread.Sleep(2000);
FreeConsole();
// Re-enable Ctrl-C handling or any subsequently started
// programs will inherit the disabled state.
SetConsoleCtrlHandler(null, false);
}
}
}
You can add "Console_CancelKeyPress" event in your console application to nicely terminate it. If you want to call this method from another application (from where you've started your console application), add the above method.