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

embedded/2024/9/23 4:01:13/

文章目录

    • 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.ppmy.cn/embedded/115401.html

相关文章

前端vue-自己封装组件并使用三步走

在components下,创建.vue文件,里面正常写样式什么的,在需要引用的文件内先在script标签内引入在components下创建的组件,再导出处使用,再在templete标签内直接使用自己封装的组件。

『功能项目』QFrameWorkBug关联Slot(插槽)【67】

我们打开上一篇66QFrameWorkBug拖拽功能的项目, 本章要做的事情是关联插槽Slot 修改脚本:UISlot.cs 修改脚本:UGUICanvas.cs 此时关联Slot已经完成 接下来的文章内容: 1.QFrameWork扔到地上UGUI 2.位置存储功能 3.点击名称寻…

剖析Spark Shuffle原理(图文详解)

Spark Shuffle 1.逻辑层面 从逻辑层面来看,Shuffle 是指数据从一个节点重新分布到其他节点的过程,主要发生在需要重新组织数据以完成某些操作时。 RDD血统 Shuffle 触发条件: reduceByKey、groupByKey、join 等操作需要对数据进行分组…

【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤

问题描述 Azure Redis在使用的过程中,多次无规律的出现超时问题。抓取到客户端的异常错误后,想进一步的分析是何原因导致了如下异常呢? Timeout awaiting response (outbound0KiB, inbound0KiB, 5984ms elapsed, timeout is 5000ms), command…

Vue3.3新特性defineModel

defineModel的使用: defineModel选项可以帮我们省去很多麻烦 不仅需要上述操作,还需要进行一定的配置: 在vite.config.js中进行配置 defineModel是一个宏,所以不需要从vue中import导入,直接使用就可以了。这个宏可以用来声明一个…

Flask 设置session 自定义登录验证

"""1. 设置session# 设置session成功 重定向到首页session.permanent True # 设置会话过期时间session[info] usernamereturn redirect(url_for(index))2. 获取sessioninfo session.get(info, default0)return render_template(index.html, infoinfo)3. 设置…

小程序与APP的区别

目录 前言1. 开发方式与成本2. 运行环境与获取途径3. 功能复杂度与交互体验4. 更新与维护5. 推广与用户获取6. 占用空间与存储7. 可分享性总结 前言 小程序与APP作为两种不同类型的应用程序,它们在多个方面存在明显的区别。以下是对这些区别的详细阐述:…

【解决】chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标

chrome 谷歌浏览器,鼠标点击任何区域都是 Input 输入框的状态,能看到输入的光标 今天打开电脑的时候,网页中任何文本的地方,只要鼠标点击,就会出现一个输入的光标,无论在哪个站点哪个页面都是如此。 我知道…