自学内容网 自学内容网

C# Winform调用控制台程序(通过Process类)

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);
        }

原文地址:https://blog.csdn.net/weixin_51169222/article/details/142352107

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!