C#操作exe应用程序

首先,操作和调用并不一样,在我看来,调用也许就是直接运行这个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 这个参数
  • 参数设置完毕后就能开启进程,这里也记得随手关闭进程。(节约资源)
其余几个参数可以看注释解释,还有一些不太常用的参数我在这里就多一一列举了,需要用到的时候可以自己去查阅ProcessStartInfo 以及Process 的官方文档,里面都有详细的教程。 上面是将操作的流程包装成了一个函数,可以直接调用,灵活性更高,下面举一个测试实例:
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进行接收就好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章