命令行我想大家都用过:

今天我打算干的,就是把它弄到WinForm里来。。做出来就像这样(动画)

如果你要问这蛋疼的做法有什么意义,看

所以你可以给命令行下的「DOS」程序,穿上一层WinForm的外衣,给原来只有命令行的程序制作一个精美的GUI。。

比如uharc.exe,比如csc.exe

Bla bla bla……

除了命令行,Process还可以干很多很多事情,更多的用法,那就得看你的创意了。

---------------

程序思路是这样的:

我可以通过运行cmd.exe来操作命令行,现在要给它一个GUI

Windows的命令行cmd.exe --> 新进程Process --> 你的WinForm --> 对玩家来说,看到的只有GUI

用到了System.Diagnostics.Process进程类来运行和管理cmd.exe

Process介绍如下

Process

提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。

Process 组件提供对正在计算机上运行的进程的访问。用最简短的话来说,进程就是当前运行的应用程序。线程是操作系统向其分配处理器时间的基本单位。线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。

对于启动、停止、控制和监视应用程序等任务,Process 组件是很有用的工具。使用 Process 组件,可以获取正在运行的进程的列表,或者可以启动新的进程。Process 组件用于访问系统进程。初始化 Process 组件后,可使用该组件来获取有关当前运行的进程的信息。此类信息包括线程集、加载的模块(.dll 和 .exe 文件)和性能信息(如进程当前使用的内存量)。

先给cmd.exe一个进程p

C# code ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        Process p; //进程
        StreamWriter input; //输入数据流
        public Form1()
        {
            InitializeComponent();
            p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;//自定义shell
            p.StartInfo.CreateNoWindow = true;//避免显示原始窗口
            p.StartInfo.RedirectStandardInput = true;//重定向标准输入(原来是CON)
            p.StartInfo.RedirectStandardOutput = true;//重定向标准输出
            p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
            //数据接收事件(标准输出重定向至此)
            p.Start();//GO
            input = p.StandardInput;//重定向输入
            p.BeginOutputReadLine();//开始监控输出(异步读取)
        }

输入命令后,执行命令

C# code ?
1
2
3
4
        private void button1_Click(object sender, EventArgs e)
        {
            input.WriteLine(textBox1.Text);//直接写入流即可
        }

读取命令行的响应

C# code ?
1
2
3
4
        void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            update(e.Data + Environment.NewLine);
        }

注意,因为是在另一个进程中异步读取数据,所以update里是不能直接修改输出TextBox的Text属性的(不是同一个线程)。所以用一个简单的委托解决这个问题。

C# code ?
1
2
3
4
5
6
7
8
9
10
        delegate void updateDelegate(string msg);
        void update(string msg)
        {
            if (this.InvokeRequired)
                Invoke(new updateDelegate(update), new object[] { msg });
            else
            {
                textBox2.Text += msg;
            }
        }

---------------------

嗯,没了,就这么简单。

Process非常强大,欢迎各位贴出好玩的构思,大家一起乐一乐。

给命令行(cmd)做一个GUI——Process的应用相关推荐

  1. path变量、命令行cmd、进制、位权相关介绍及使用

    path变量.命令行cmd.进制.位权相关介绍及使用 文章目录 path变量.命令行cmd.进制.位权相关介绍及使用 一.计算机的组成 二. windows的命令行 1.如何进入命令行? 2.命令行结 ...

  2. larvel 5.7命令行cmd常用命令

    larvel 5.7命令行cmd常用命令 一.使用如下 Artisan 命令创建一个新的 TagCreateRequest: 1.创建常规类()Make 文件夹 控制器名字 例如表单请求类: php ...

  3. 组策略9-禁用命令行CMD

    组策略9-禁用命令行CMD 出于安全考虑有些部门需要禁用CMD的运行, 首先在组策略管理中的组策略对象里新建立一个名为"禁用CMD"的GPO,"源 Starter GPO ...

  4. 在命令行cmd中运行带相对路径的py脚本时, 找不到路径的解决方案

    症状: 直接运行py文件正常, 在命令行cmd中运行则报错 报错原因: 工作路径 与 脚本文件存放路径不统一 解决方案一: 控制台工作路径切换为文件所在路径: cd py文件所在路径 解决方案二: 在 ...

  5. 初次玩pyecharts:30行代码做一个可视化广东省各地天气温度排行图

    初次玩pyecharts:30行代码做一个可视化广东省各地天气温度排行图 开篇点题,直接上效果图 开篇再点题,直接上源码 import re import requests from pyechart ...

  6. 命令行cmd基础操作

    找出cmd win +r :出现控制面板,输入cmd,点击确认即可. 命令行cmd的基础操作 (1)d:      切换到d盘 (2)cd d盘下某个文件夹名称 (3)cd 名称\名称\名称    直 ...

  7. Windows 命令行 (cmd) 切换盘符

    Windows 命令行 (cmd) 切换盘符 MS-DOS (/ˌɛmˌɛsˈdɒs/ Microsoft Disk Operating System) is an operating system ...

  8. 12.【最详细】如何用命令行cmd运行java程序

    0.前置知识 1.从IDEA中使用命令行的方法 (1)直接在IDEA中使用: (2)从IDEA到cmd: 第一步:从IDEA中打开代码文件所在目录 第二步:从资源管理器中进入cmd的方法 在文件地址栏 ...

  9. 【错误记录】Android 中调用 Process 命令行执行指令 ( java.lang.IllegalThreadStateException: process hasn‘t exited )

    文章目录 一.报错信息 二.解决方案 一.报错信息 2021-05-07 13:24:24.672 29512-29512/kim.hsl.a7_zip E/AndroidRuntime: FATAL ...

最新文章

  1. 我是买家的前世今生,该到了say goodbye的时候了!
  2. FastCGI模块(FastCGI)
  3. 电脑机器人_视频|电话积分换平板电脑和扫地机器人?女子拿回家后……-
  4. aspx转发php_asp,php,aspx一句话合集
  5. 比dropout更好的方法_经营公司有更好的方法
  6. nutwk的maven中央仓库及配置
  7. 为什么换工作?(面试必问问题)
  8. Spring4 SpringMVC Hibernate4 Freemaker 集成示例
  9. 一年中重要的节日列表_外贸干货 | 关于节日祝福与安排
  10. 2003服务器系统pe,SERVER 2003 PE(移动存储PE系统)v16.68免费版
  11. 软件测试的流程结构图
  12. k8s中安装traefix并配置dashboard访问权限
  13. 一键生成2020年虎年头像
  14. python植树问题代码_小学数学最难的13种典型题,让孩子吃透了,拿高分不难!...
  15. LSTM实现股票预测
  16. console.log详解
  17. KMP 看毛片算法原理及其实现
  18. CKEDITOR获取内容
  19. Generation
  20. 家用是买轿车还是suv_SUV的完整形式是什么?

热门文章

  1. 商城mysql设计_设计简单的商城数据库
  2. PLC攻击(一):应用层攻击
  3. 关于举办“ISO 15189 医学实验室认可内审员及医学实验室质量控制”以及“测量结果的计量溯源性要求”网络培训班的 通知...
  4. 各种样式的表格数据自动统一抽取
  5. STM32学习心得三十五(上):VS1053实验之RAM测试及正弦测试
  6. 用逻辑层次帮学生分析学C语言的问题
  7. 【信奥赛一本通】1184:明明的随机数(详细代码)
  8. linux 安装监听中文,cacti中文安装配置与监控wWindows Server和Linux服务器
  9. 电子名片输出格式通用规范
  10. java springboot + nginx 自建 文件集群服务器