我必须发送 Ctrl+C 到从我的 C# 应用程序创建的控制台进程。我发现了很多类似的线程,但还没有找到解决方案(尝试过 CreateProcess、GenerateConsoleCtrlEvent 等)。有工作示例吗?
别用这些
Process
废话来烦恼。
MedallionShell 可以发送
Ctrl + C
信号并作为多平台实现,因此您可以忘记您在那里看到的所有 Windows 互操作内容。 MedallionShell
为您做到。它还使得与流程交互的所有其他方面变得完全微不足道,并包括 Task / TPL
和 CancellationToken
支持。还有就是MIT Licensed
!
使用起来非常简单:
var command = Command.Run("dotnet", "run", "--project", "C:\MyRepo\MyProj\MyProj.csproj");
// Do what you gotta do. hey, I ain't juding.
await command.TrySignalAsync(CommandSignal.ControlC);
Aa 和 PRESTO!您现在已经管理了流程的整个生命周期,没有任何 Windows 特定的疯狂恶作剧。
希望这有帮助!
密钥
CRTL + C
是ASCII 3(十进制)
myProcess.StartInfo.FileName = "Sort.exe";
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.Start();
StreamWriter myStreamWriter = myProcess.StandardInput;
myStreamWriter.WriteLine(inputText);
参考:http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardinput.aspx