C#:发送ctrl + c到用Process.Start()启动的控制台程序?

joh*_*nrl 5 c# escaping copy-paste

可能重复:
如何将ctrl + c发送到c#中的进程?

我无法弄清楚如何模拟发送Ctrl+ C外部程序.当我通过CMD手动运行该程序,当我按下Ctrl+ c将中止,并问我是否要保存它已完全关闭之前.我试图通过C#来模拟它,但它似乎不起作用.

这就是我现在正在做的事情:

// 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
Run Code Online (Sandbox Code Playgroud)

该计划没有回应这个,只是继续.在控制台中执行+ 时,Windows实际上不会向输入流发送Ctrl+ 的问题,而是向进程发送"中断"吗?我认为将"\ x3"发送到输入流完全是Windows 在控制台中按+ 时所做的事情.我错了吗?CCtrlcCtrlc