发送Ctrl+C进行处理

问题描述 投票:0回答:2

我必须发送 Ctrl+C 到从我的 C# 应用程序创建的控制台进程。我发现了很多类似的线程,但还没有找到解决方案(尝试过 CreateProcess、GenerateConsoleCtrlEvent 等)。有工作示例吗?

c# winapi
2个回答
0
投票

别用这些

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 特定的疯狂恶作剧。

希望这有帮助!


-1
投票

密钥

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

© www.soinside.com 2019 - 2024. All rights reserved.