I can't figure out how to simulate sending Ctrl+C to an external program. When I run the program manually through CMD, when I press ctrl+c it will abort and ask me if I want to save before it shuts down completely. I'm trying to simulate this through C# but it doesn't seem to work.
This is what I am doing now:
// Create new process object
process = new Process();
// Setup event handlers
process.EnableRaisingEvents = true;
process.OutputDataReceived += OutputDataReceivedEvent;
process.ErrorDataReceived += ErrorDataReceivedEvent;
process.Exited += ProgramExitedEvent;
// Setup start info
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = ExePath,
UseShellExecute = false, // Must be false to redirect IO
RedirectStandardOutput = false,
RedirectStandardError = false,
RedirectStandardInput = true,
Arguments = arguments
};
process.StartInfo = psi;
// Start the program
process.Start();
process.StandardInput.Write( "\x3" ); // 0x3 is Ctrl+C according to ASCII table
The program doesn't respond to this and just continues. Is the problem that Windows actually doesn't send Ctrl+C to the input stream when doing Ctrl+C in the console, but instead sends an "interrupt" to the process? I thought that sending "\x3" to the input stream is EXACTLY what Windows does when one presses Ctrl+C in the console. Am I wrong?