当前位置: 首页 > article >正文

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

http://www.kler.cn/news/315426.html

相关文章:

  • Java设计模式(单例模式)——单例模式存在的问题(完整详解,附有代码+案例)
  • svn 1.14.5
  • numpy的花式引用
  • 3款免费的GPT类工具
  • Git 原理(提交对象)(结合图与案例)
  • 前后端分离项目中如何保证 API 安全
  • leetcode第十题:正则表达式匹配
  • (k8s)kubernetes 部署Promehteus学习之路
  • C语言:冒泡排序的注意事项及具体实现
  • Linux 基础IO 1
  • set的相关函数(3)
  • Node.js的学习2——内置模块(一)
  • 电气设备施工现场风险状态判断ai模型训练数据集
  • 【沪圈游戏公司作品井喷,游戏产业复兴近在眼前】
  • 整数二分算法和浮点数二分算法
  • 【数据结构与算法 | 灵神题单 | 二叉搜索树篇】力扣653
  • 基于SpringBoot的在线点餐系统【附源码】
  • 【C++笔记】C++编译器拷贝优化和内存管理
  • 【Obsidian】当笔记接入AI,Copilot插件推荐
  • SpringCloud alibaba
  • 算法-环形链表(141)
  • 【Elasticsearch】-图片向量化存储
  • ffplay ubuntu24出现:Could not initialize SDL - dsp: No such audio device
  • Redis存储原理
  • ElementUI 用span-method实现循环el-table组件的合并行功能
  • Spring Boot文件上传/下载问题
  • 计算机网络(运输层)
  • Selenium:开源自动化测试框架的Java实战解析
  • SpringCloud Feign 以及 一个标准的微服务的制作
  • linux驱动开发-ioctl