2013-01-03 37 views
3

我需要从C#自动化外部Windows控制台应用程序。应用程序基本上是与外部设备的接口。当我调用应用程序时,它会要求我进行身份验证,即输入密码并提示类似“输入密码:”的内容。现在没有办法配置此应用程序在没有交互式密码提示的情况下运行。发送密码/字符串到外部控制台应用程序C#

所以我想通过发送密码在C#中自动执行同样的操作,然后触发将在外部设备上执行的come命令,然后抓取输出。我知道流程类,我有一些像我可以使用管道这样的指针(不确定?)。

由于本人在寻求帮助/方向之前没有处理过这种自动化操作,

在此先感谢。

回答

5

做到这一点的方法是使用重定向成员,e.g ProcessStartInfo.RedirectStandardInput Property

 Process myProcess = new Process(); 

    myProcess.StartInfo.FileName = "someconsoleapp.exe"; 
    myProcess.StartInfo.UseShellExecute = false; 
    myProcess.StartInfo.RedirectStandardInput = true; 
    myProcess.StartInfo.RedirectStandardOutput = true; 
    myProcess.StartInfo.ErrorDialog = false; 

    myProcess.Start(); 

    StreamWriter stdInputWriter = myProcess.StandardInput; 
    StreamReader stdOutputReader = myProcess.StandardOutput; 

    stdInputWriter.WriteLine(password); 

    var op = stdOutputReader.ReadLine(); 

    // close this - sending EOF to the console application - hopefully well written 
    // to handle this properly. 
    stdInputWriter.Close(); 


    // Wait for the process to finish. 
    myProcess.WaitForExit(); 
    myProcess.Close(); 
相关问题