解决方法一:

  自己放一个文本框,改成黑色,然后输入命令,执行时,你Process.Start cmd ,此时CMD窗口不显示,然后,将CMD的返回值,再取出来,设回文本框。

  如何用这种方法实时获取cmd返回的数据,简单实现如下

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

解决方法二:

  直接上代码

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

  备注:记得引用 using System.Runtime.InteropServices;

c#嵌套CMD窗口的更多相关文章

  1. cmd窗口编码设置

    问题描述:不知道误操作了什么,导致cmd窗口的鼠标显示位置出现错位,如下: 现在要将鼠标位置调整回来. 使用工具:cmd. 操作步骤: 1.查看cmd属性可以看到 可以看到是UTF-8编码格式的,我们 ...

  2. 不显示cmd窗口运行jar包

    今天,打开导出的jar包,发现并不能运行,查看jar包中的META-INF文件夹下的MANIFEST.MF文件,发现MANIFEST.MF中并没有Main-Class,于是,就手动添加相应的信息,本项 ...

  3. CMD命令之 :修改windows的CMD窗口输出编码格式为UTF-8

    修改windows的CMD窗口输出编码格式为UTF-8 转载自 http://xuliduo.iteye.com/blog/639923 dos命令: chcp 65001  就是换成UTF-8代码页 ...

  4. CMD窗口如何调整大小 / 颜色

    Windows默认的命令行工具CMD暴丑无比..很多人都会因为这个原因去寻找漂亮的命令行工具.. 但是很多所谓的命令行工具并不能完美的支持到CMD.. 譬如 PowerCMD 或 Cmder 之流.. ...

  5. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...

  6. [Skills] 在桌面打开一个BAT文件,CMD窗口不关闭

    每次开机都要取得本机IP,然后远程连接上去,屏幕太小,不好输入,想写个bat,执行就能看到IP,并且停留在cmd窗口上,想来简单,以前搜了好久没找到好的办法,今天找到一个贴子,竟然可以,呵呵!   以 ...

  7. CMD窗口正确显示UTF-8字符

     Go语言教程 http://yiibai.com/go/  CMD窗口正确显示UTF-8字符 http://www.360doc.com/content/13/0424/13/2569758_280 ...

  8. windows下配置环境变量时,在cmd窗口执行配置的命令时无效的原因

    一个原因肯定就是配置错误,这个就要自己仔细去检查了,如果确信配置正确,可能是你的cmd窗口在环境变量配置之前就打开的,在配置好环境变量之后,在cmd窗口执行命令是看不到效果的,可以关掉cmd窗口再重新 ...

  9. window的cmd窗口运行git

    般情况下,我们在 Window 下安装好 git 后,在运行里面打开 cmd 窗口,在里面直接运行 git --version ,会提示“不是内部或外部命令,也不是一个可运行的程序”. 要想在cmd窗 ...

随机推荐

  1. Delphi百度语音【支持语音识别和语音合成】

    作者QQ:(648437169) 点击下载➨百度语音         语音识别api文档         语音合成api文档 [Delphi 百度语音]支持获取 Access Token.语音识别.语 ...

  2. logrus 剖析之滚动日志

    在实际开发过程中,为了节省磁盘,日志需要按照时间或者大小维度进行切割分成多分,归档过期的日志,删除久远的日志.这个就是在日常开发中经常遇见的日志滚动(log rotation) 那么在 logrus ...

  3. Numpy学习笔记(上篇)

    目录 Numpy学习笔记(上篇) 一.Jupyter Notebook的基本使用 二.Jpuyter Notebook的魔法命令 1.%run 2.%timeit & %%timeit 3.% ...

  4. get merge --no-ff和git merge区别、git fetch和git pull的区别

    get merge --no-ff和git merge区别 git merge -–no-ff可以保存你之前的分支历史.能够更好的查看 merge历史,以及branch 状态. git merge则不 ...

  5. IDEA远程DEBUG Tomcat配置

    IDEA远程DEBUG Tomcat配置 IDEA远程DEBUG Tomcat很简单,配置如下: 1.修改tomcat服务器配置 打开tomcat/bin/catalina.sh 在空白处添加如下参数 ...

  6. BZOJ4141 THUSC2013 魔塔 贪心

    没得传送门 考虑当\(Atk\)增大时,\(Def\)一定越来越没用,因为回合数在变少.所以考虑从小到大枚举\(Atk\)然后双指针计算. 设\(f_i(x)\)表示在\(Atk = i\)时,\(D ...

  7. Git命令和使用

    Git & GitHub Git是一个工具,用于命令行操作 GitHub是一个协同工作平台 包括: Remote original Repository - 远程主仓库(上线唯一仓库) Rem ...

  8. 实战远程文件同步(Remote File Sync)

    1. 远程文件同步的常见方式: 1.cron + rsync 优点: 简单 缺点:定时执行,实时性比较差:另外,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚 ...

  9. 有关Nodejs的一些插件介绍

    var child_process = require('child_process');这个可以执行cmd的命令 child_process.exec(cmdLine, function(error ...

  10. Java NIO和IO的区别

    下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异. 复制代码 代码如下: IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器 面向流与面向缓冲 Java NIO ...