C# Winform调用控制台程序(通过Process类)
文章目录
- 1.引入命名空间
- 2.初始化进程
- 3.启动进程
1.引入命名空间
using System.Diagnostics;
2.初始化进程
1.startInfo.FileName 运行的.exe文件的完整路径,也可以使用相对路径。
2.startInfo.Arguments 允许你向.exe程序传递命令行参数,参数间用空格分隔,也可以使用内插字符串。
3.startInfo.UseShellExecute 如果设为true,那么将使用操作系统外壳来启动进程;如果设为false,则直接启动进程,并且你可以重定向输入输出流。
4.startInfo.WindowStyle 设置了新打开窗口的样式,默认是正常显示。
private void StartButton_Click(object sender, EventArgs e)
{
// 定义要启动的进程信息
ProcessStartInfo startInfo = new ProcessStartInfo();
// 设置要启动的应用程序路径
startInfo.FileName = @"C:\Path\To\Your\Program.exe";
//也可以使用相对路径 .\\Program.exe
//.表示当前目录 ..表示上一级目录
//可以使用Directory.GetCurrentDirectory()获取当前目录
//string s=Directory.GetCurrentDirectory();
// MessageBox.Show(s);
// 如果需要传递参数给.exe程序,可以设置Arguments属性,参数间用空格分隔。.exe程序中用args接收参数。
startInfo.Arguments = "your arguments here";
//args[0]=your args[1]=arguments args[2]=here
//如果需要传变量可以使用内插字符串
//startInfo.Arguments = $"0483 5448 {comboBox1.Text}";
// 是否使用Shell执行
startInfo.UseShellExecute = true;
// 是否等待子进程退出
startInfo.WindowStyle = ProcessWindowStyle.Normal; // 可以选择隐藏、最大化等
/*
Normal 正常显示
Hidden 隐藏
Minimized 最小化
Maximized 最大化
*/
}
.exe程序
static void Main(string[] args)
{
UsbDevice ub = new UsbDevice();
ub.OpenUsbDevice(args[0], args[1]);
//当参数过长时,可能会遇到命令行参数长度限制的问题。
//在Windows中,命令行参数的最大长度大约为8192个字符。如果参数超过了这个长度,启动进程时可能会失败。
//可以传文件路径 在.exe程序中读取文件
string str = File.ReadAllText(args[2]);//读取文件
ub.Senda(str);
}
3.启动进程
try{
// 启动进程
Process.Start(startInfo);
}catch (Exception ex) {
// 处理异常
MessageBox.Show("Error: " + ex.Message);
}