使用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;
}

使用Process启动exe将挂起c#中的用户输入

使用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");