目录
1、引言
2、exe调用
1、引言
据说界面程序开发,首选C#(像lebview之类的也很好)。但是,能不能用其他语言开发核心代码,只用C#做界面?毕竟每种语言都有自己擅长的领域。那么就引出如何使用C#调用外部带有参数exe的问题。
在之前的DSP篇中有一篇文章有涉及到C#调用外部exe的:
DSP篇--C6701 BOOT(头文件烧写法)_nanke_yh的博客-CSDN博客
https://blog.csdn.net/nanke_yh/article/details/106606707
其中调用代码为:System.Diagnostics.Process.Start(exePath, textBox1.Text);
查看System.Diagnostics的从元数据可以发现:
public static Process Start(string fileName, string arguments);
这Start重载参数不超2个,正好这个exe只需要外部传入一个参数的,那调用的exe需要传入多个参数的又该怎么写呢?
2、exe调用
在cmd中多参数外部exe的调用方式有:比如有个example.exe,能接受4个参数.
example.exe "1" "a" "2" "3"
那么在C#中参数只能填一个,那么将后面属于参数的都放在一起组成一个字符串,传入即可。
具体代码:
// 调用exe的函数 using System.Diagnostics; public bool StartProcess(string runFilePath, params string[] args) { string s = ""; foreach (string arg in args) { s = s + arg + " "; } s = s.Trim(); Process process = new Process();//创建进程对象 ProcessStartInfo startInfo = new ProcessStartInfo(runFilePath, s); // 括号里是(程序名,参数) process.StartInfo = startInfo; process.Start(); return true; }
其中就是将传入的args字符串数组遍历并整合成一个长字符串,从而加上exe的运行路径满足System.Diagnostics.Process的重载结构。
其具体使用或调用为:
string exe_path = "E:/example.exe"; // 被调exe string[] the_args = { "1","2","3","4"}; // 被调exe接受的参数 StartProcess(exe_path, the_args);
参考:使用C#调用外部exe,且带参数 - 简书 (jianshu.com)