c#嵌套CMD窗口
解决方法一:
自己放一个文本框,改成黑色,然后输入命令,执行时,你Process.Start cmd ,此时CMD窗口不显示,然后,将CMD的返回值,再取出来,设回文本框。
如何用这种方法实时获取cmd返回的数据,简单实现如下

- 1 private void OutPutForm_Shown(object sender, EventArgs e)
- 2 {
- 3 Control.CheckForIllegalCrossThreadCalls = false;
- 4 process = new Process();
- 5 p.StartInfo.FileName = "cmd.exe";
- 6 p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
- 7 p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
- 8 p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
- 9 p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
- 10 p.StartInfo.CreateNoWindow = true;//不显示程序窗口
- 11 process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
- 12 process.Start();//启动程序
- 13 process.BeginOutputReadLine();
- 14 }
- 15 private void OutputHandler(object sendingProcess,DataReceivedEventArgs outLine)
- 16 {
- 17 if (!String.IsNullOrEmpty(outLine.Data))
- 18 {
- 19 StringBuilder sb = new StringBuilder(this.textBox1.Text);
- 20 this.textBox1.Text = sb.AppendLine(outLine.Data).ToString();
- 21 this.textBox1.SelectionStart =this.textBox1.Text.Length;
- 22 this.textBox1.ScrollToCaret();
- 23 }
- 24 }

解决方法二:
直接上代码

- 1 [DllImport("User32.dll ", EntryPoint = "SetParent")]
- 2 private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
- 3 [DllImport("user32.dll ", EntryPoint = "ShowWindow")]
- 4 public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
- 5 private void button3_Click(object sender, EventArgs e)
- 6 {
- 7 Process p = new Process();
- 8 p.StartInfo.FileName = "cmd.exe ";
- 9 p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;//加上这句效果更好
- 10 p.Start();
- 11 System.Threading.Thread.Sleep(100);//加上,100如果效果没有就继续加大
- 12
- 13 SetParent(p.MainWindowHandle, panel1.Handle); //panel1.Handle为要显示外部程序的容器
- 14 ShowWindow(p.MainWindowHandle, 3);
- 15 }

备注:记得引用 using System.Runtime.InteropServices;
c#嵌套CMD窗口的更多相关文章
- cmd窗口编码设置
问题描述:不知道误操作了什么,导致cmd窗口的鼠标显示位置出现错位,如下: 现在要将鼠标位置调整回来. 使用工具:cmd. 操作步骤: 1.查看cmd属性可以看到 可以看到是UTF-8编码格式的,我们 ...
- 不显示cmd窗口运行jar包
今天,打开导出的jar包,发现并不能运行,查看jar包中的META-INF文件夹下的MANIFEST.MF文件,发现MANIFEST.MF中并没有Main-Class,于是,就手动添加相应的信息,本项 ...
- CMD命令之 :修改windows的CMD窗口输出编码格式为UTF-8
修改windows的CMD窗口输出编码格式为UTF-8 转载自 http://xuliduo.iteye.com/blog/639923 dos命令: chcp 65001 就是换成UTF-8代码页 ...
- CMD窗口如何调整大小 / 颜色
Windows默认的命令行工具CMD暴丑无比..很多人都会因为这个原因去寻找漂亮的命令行工具.. 但是很多所谓的命令行工具并不能完美的支持到CMD.. 譬如 PowerCMD 或 Cmder 之流.. ...
- 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类
一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...
- [Skills] 在桌面打开一个BAT文件,CMD窗口不关闭
每次开机都要取得本机IP,然后远程连接上去,屏幕太小,不好输入,想写个bat,执行就能看到IP,并且停留在cmd窗口上,想来简单,以前搜了好久没找到好的办法,今天找到一个贴子,竟然可以,呵呵! 以 ...
- CMD窗口正确显示UTF-8字符
Go语言教程 http://yiibai.com/go/ CMD窗口正确显示UTF-8字符 http://www.360doc.com/content/13/0424/13/2569758_280 ...
- windows下配置环境变量时,在cmd窗口执行配置的命令时无效的原因
一个原因肯定就是配置错误,这个就要自己仔细去检查了,如果确信配置正确,可能是你的cmd窗口在环境变量配置之前就打开的,在配置好环境变量之后,在cmd窗口执行命令是看不到效果的,可以关掉cmd窗口再重新 ...
- window的cmd窗口运行git
般情况下,我们在 Window 下安装好 git 后,在运行里面打开 cmd 窗口,在里面直接运行 git --version ,会提示“不是内部或外部命令,也不是一个可运行的程序”. 要想在cmd窗 ...
随机推荐
- Delphi百度语音【支持语音识别和语音合成】
作者QQ:(648437169) 点击下载➨百度语音 语音识别api文档 语音合成api文档 [Delphi 百度语音]支持获取 Access Token.语音识别.语 ...
- logrus 剖析之滚动日志
在实际开发过程中,为了节省磁盘,日志需要按照时间或者大小维度进行切割分成多分,归档过期的日志,删除久远的日志.这个就是在日常开发中经常遇见的日志滚动(log rotation) 那么在 logrus ...
- Numpy学习笔记(上篇)
目录 Numpy学习笔记(上篇) 一.Jupyter Notebook的基本使用 二.Jpuyter Notebook的魔法命令 1.%run 2.%timeit & %%timeit 3.% ...
- get merge --no-ff和git merge区别、git fetch和git pull的区别
get merge --no-ff和git merge区别 git merge -–no-ff可以保存你之前的分支历史.能够更好的查看 merge历史,以及branch 状态. git merge则不 ...
- IDEA远程DEBUG Tomcat配置
IDEA远程DEBUG Tomcat配置 IDEA远程DEBUG Tomcat很简单,配置如下: 1.修改tomcat服务器配置 打开tomcat/bin/catalina.sh 在空白处添加如下参数 ...
- BZOJ4141 THUSC2013 魔塔 贪心
没得传送门 考虑当\(Atk\)增大时,\(Def\)一定越来越没用,因为回合数在变少.所以考虑从小到大枚举\(Atk\)然后双指针计算. 设\(f_i(x)\)表示在\(Atk = i\)时,\(D ...
- Git命令和使用
Git & GitHub Git是一个工具,用于命令行操作 GitHub是一个协同工作平台 包括: Remote original Repository - 远程主仓库(上线唯一仓库) Rem ...
- 实战远程文件同步(Remote File Sync)
1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...
- 有关Nodejs的一些插件介绍
var child_process = require('child_process');这个可以执行cmd的命令 child_process.exec(cmdLine, function(error ...
- Java NIO和IO的区别
下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异. 复制代码 代码如下: IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器 面向流与面向缓冲 Java NIO ...