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

时间:2010-03-25 16:53:58

标签: c# escaping copy-paste

  

可能重复:
  How do I send ctrl+c to a process in 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

该计划没有对此作出回应,只是继续。在执行 Ctrl + c 时,Windows实际上不会将 Ctrl + C 发送到输入流的问题在控制台中,而是向进程发送“中断”?我认为在输入流中发送“\ x3”正是Windows在控制台中按 Ctrl + c 时所做的事情。我错了吗?

0 个答案:

没有答案