가능한 중복 :
How do I send ctrl+c to a process in c#?C# : Process.Start()로 시작한 콘솔 프로그램에 Ctrl + 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"을 보내는 것이 콘솔에서 Ctrl + c을 누를 때 Windows가 수행하는 작업이라고 생각했습니다. 내가 잘못?
당신의 콘솔은 아마'^ C '를 잡아서 프로그램에 어떤 종류의 신호를 보낼 것입니다. 당신은 그 행동을 모방 할 필요가 있습니다. Unixy 시스템에서는'SIGINT'가 될 것입니다. 윈도우에 관해서 많이 알지는 못합니다. –
이것은 나의 이론 중 하나입니다. 나는 CMD가 내 프로그램에 보내는 Windows 용 CMD (ctrl + c가 아닌 경우)를 알지 못합니다. – johnrl