同编译器一样,在winform中要弹出控制台界面.如何实现?
1.试过把输出属性改为控制台程序,程序一运行就会弹出控制台界面,怎样才能控制控制台界面的弹出时机?
2.想过将一个console程序进程,在winform中包装,输入输出重定向到一个textbox,但好像也先要生成一个控制台程序的.(ProcessStartInfo p = new ProcessStartInfo(控制台程序);
我的想法不大对,想问问大侠们是怎么在winform中弹出控制台界面的?

解决方案 »

  1.   

    你可以用一个PROCESS调用CMD.exe出来啊
      

  2.   

    据我所知,这样的程序都是这样的:
    是两个程序,一个是winform程序,一个是控制台程序。只不过在winform程序中启动那个控制台程序而已。两个程序之间能不能进行数据交换,我就不太清楚了。我想就算能,也不是直接进行的,而是通过一个别的什么机制实现的。
      

  3.   

    我在VC里面这样用  ,你参考下吧。::AllocConsole()//重定向标准输出
    freopen("CONOUT$","w+t",stdout);//重定向标准输入
    freopen("CONIN$","r+t",stdin);
      

  4.   

    http://community.csdn.net/Expert/topic/5077/5077268.xml?temp=.228924
      

  5.   

    你可以用一个PROCESS调用CMD.exe出来啊
      

  6.   

    using System.Diagnostics;
    Process p = new Process();p.StartInfo.FileName = @"cmd.exe";p.start();
      

  7.   

    这个问题你就要多绕着想了你可以用process打开一个你编辑好的dos程序,当然这个dos程序肯定是cmd界面的,然后可以做输入输出的操作,结束的时候可以把结果保存在一个位置,等你再运行Form程序的时候再调用该结果。
      

  8.   

    using System.Diagnostics;
    Process p = new Process();
    p.StartInfo.FileName = @"cmd.exe";
    p.start();好像在form 中不能弹出cmd.exe来.
      

  9.   

    给你一个例子,控制台与文本框
    string getText(string cmdstr)
    {
    Process p = new Process(); 
    p.StartInfo.FileName = "cmd.exe"; 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.RedirectStandardInput = true; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.RedirectStandardError = true; 
    p.StartInfo.CreateNoWindow = true; 
    p.Start(); 
    p.StandardInput.WriteLine(cmdstr);
    p.StandardInput.WriteLine("exit"); //这句可写可不写
    return p.StandardOutput.ReadToEnd();
    }像这样写成一个方法,就可以控制你想显示控制台的时间,因为只有当你调用的这个方法的时候它才会出现。如:
    textBox1.Text = getText("nets"); 
      

  10.   

    p.StandardInput.WriteLine("exit")这句话如果是用再像textBox啊什么的就一定要写,如果用在其他用途上面可改为其他语句啊什么的。反正看你自由发挥了
      

  11.   

    至于你们刚才讨论的弹出控制台,也就是显示控制台。把p.StartInfo.CreateNoWindow = true改成false就行了。
      

  12.   

    To:p.StandardInput.WriteLine("exit")这句话如果是用再像textBox啊什么的就一定要写
    能解释解释么?
      

  13.   

    谢谢大家,但问题没解决
    p.StartInfo.FileName = @"cmd.exe";
    你可以用process打开一个你编辑好的dos程序,当然这个dos程序肯定是cmd界面的,然后可以做输入输出的操作.
    -----------------------------------------------------------------
    我也知道,只要有一个控制台程序,我就能与我的winform交互,但这个控制台程序找不到,cmd弹出的是dos界面,不能识别console.write等命令.祝大家周末愉快,也希望我的问题周末能得到解决:)
      

  14.   

    楼主,在winform中控制台的进程是取不到的,只能用process打开已有的程序,运行Form程序的时候再调用该结果。
      

  15.   

    编译器编译时,应该就是cmd窗口