C#调用外部程序的两种方法
我是文明,以下即代表我的个人认同与看法,有不同看法的可以留言哈,谢谢你的阅读,文章有错字或代码错误请指正,谢谢你哦。
c# 调用外部程序 exe:
一、进程调用:
Process process = new Process();
process.StartInfo.UseShellExecute = false; //必要参数
process.StartInfo.RedirectStandardOutput = true;//输出参数设定
process.StartInfo.RedirectStandardInput = true;//传入参数设定
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = AppDomain.CurrentDomain.BaseDirectory + "\\map.exe";
process.Start();
process.WaitForExit();//等待程序执行完退出进程
process.Close();
二、cmd 调用:
string cmd="" //cmd命令
cmd = cmd + "&exit";
Process process = new Process())
process.StartInfo.FileName = @"cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();//启动程序
process.StandardInput.WriteLine(cmd); //向cmd窗口写入命令
process.StandardInput.AutoFlush = true;
process.WaitForExit();//等待程序执行完退出进程
process.Close();
外部程序,如果程序结束时程序不会自动中断,请在命令行中添加taskkill命令中断进程
结束进程 :taskkill /f /t /im 进程名; 参数解释:
1、/f 指定要强行终止进程。
2、/t 终止指定的进程和任何由此启动的子进程。
为什么要使用这个两个类似的方法呢?? 有点时候不能直接运行程序 必须使用命令行调用,python封装的代码有时候就会出现这个问题 通常使用方法一即可,(方法二更强大一点)
补充:(添加方法委托,输出窗体内容OutputHand:方法)
process.OutputDataReceived += new DataReceivedEventHandler(OutPutHand);
private void OutPutHand(object process, DataReceivedEventArgs outLine)
{
}
三、bat调用
当以上二种方法不能启动你的exe,可以尝试使用bat命令调用exe代码,这种方法限制少,可以启动带ui的程序。(通常为pyinstaller封装的代码) 使用的方法是将方法一执行参数改成bat脚本的位置,bat脚本编写(.bat):
方法一:process.StartInfo.FileName=路径+"name.bat"
cd /
cd 脚本位置
exe名称 参数
更改后缀为 《文件名.bat
四、声明
1、以上通过本人测试与调试,是在项目中实践的方法,经过论证,可以实现,如有问题或错误请留言,感谢您的阅读!
2、转载请标注来源,感谢你的阅读!