使用Process启动exe将挂起c#中的用户输入
本文关键字:用户 输入 挂起 Process 启动 exe 使用 | 更新日期: 2023-09-27 18:28:06
我正在使用以下代码启动一个exe。我能够成功运行exe,但它会请求用户输入字符"y"或"n"(即是/否)我想要的是,在运行exe(静默安装,即没有cmd窗口或没有用户交互)时,我应该能够将"y"字符作为用户输入
下面是我的代码
public bool launchExe(exeFilepath)
{
bool status = true;
try
{
using (var myProcess = new Process())
{
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.UseShellExecute = true;
myProcess.EnableRaisingEvents = true;
myProcess.StartInfo.WorkingDirectory = exeFilepath;
myProcess.StartInfo.FileName = "Launcher.exe";
myProcess.Start();
myProcess.WaitForExit();
if (myProcess.ExitCode == 0)
status = true;
else
status = false;
}
}
catch (Exception ex)
{
Logger.Information(ex.Message);
status = false;
}
return status;
}
使用ProcessStartInfo.RedirectStandardInput
写入已启动的Process
:
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.StartInfo.CreateNoWindow = true;
myProcess.EnableRaisingEvents = true;
myProcess.StartInfo.WorkingDirectory = exeFilepath;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.Start();
Thread.Sleep(1000); // wait 1 second
StreamWriter myStreamWriter = myProcess.StandardInput;
myStreamWriter.WriteLine("y");