首先,操作和调用并不一样,在我看来,调用也许就是直接运行这个exe文件,而我所说的操作就类似于在cmd里面用命令行的方式来获得信息交互。这次,我们需要使用C#代码语言的方式来动态操作exe应用程序。虽然听起来可能很高大尚,但是实质上主要就两种操作,一个是向命令行写入数据的操作,另一个则是读取命令行的结果的操作。
话不多说,直接上代码吧:
public static String ExecProc(string TableID, string exeFilePath, Process process1, ProcessStartInfo startInfo)
{
if (TableID != null)
{
startInfo.FileName = exeFilePath;//执行exe文件
//startInfo.Arguments = TableID;//参数
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
//startInfo.CreateNoWindow = true; //不创建窗口
//startInfo.UseShellExecute = false;// 不使用系统外壳程序启动
process1.StartInfo = startInfo;
}
process1.Start();
process1.StandardInput.WriteLine(TableID);
string txt = process1.StandardOutput.ReadLine();
//process1.Close();
//process1.Kill();
return txt;
}
- Arguments 这个参数是指在进入程序前输入的参数,如果想程序中进行参数交互就需要开启RedirectStandardInput 这个参数
- 同理,想要获取exe命令行返回的结果,也需要开启RedirectStandardOutput 这个参数
- 参数设置完毕后就能开启进程,这里也记得随手关闭进程。(节约资源)
public String Get()
{
Process process1 = new Process();//创建进程对象
ProcessStartInfo startInfo = new ProcessStartInfo();//进程信息对象
String str = ExecProc("START 15", @"C:\Users\VULCAN\Desktop\Gobang\pbrain-SlowRenju19.exe", process1, startInfo);
return str;
}
这个代码我是想把获得到的数据呈现在前端页面,如果用控制台的话就直接用Console.WriteLine()函数就ok。顺便扩展一句,如果想用持续与前端页面进行数据交互,这时候可能就无法直接传递数据,需要将数据包装成json格式进行发送,而前端用ajax进行接收就好。