我无法弄清楚如何模拟将 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
该计划没有对此作出回应,只是继续。在执行 Ctrl + c 时,Windows实际上不会将 Ctrl + C 发送到输入流的问题在控制台中,而是向进程发送“中断”?我认为在输入流中发送“\ x3”正是Windows在控制台中按 Ctrl + c 时所做的事情。我错了吗?