Как включить консоль в Winforms?

Я хотел бы иметь окно консоли, встроенное в Winform. Есть ли способ сделать это?

3 ответов


все, что вам нужно сделать, это вызвать функцию Windows API AllocConsloe затем использовать обычный класс консоли вот код формы

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace waTest
{
    public partial class Form1 : Form
    {
        [DllImport("Kernel32.dll")]
        static extern Boolean AllocConsole( );

        public Form1( )
        {
            InitializeComponent();
        }

        private void Form1_Load( object sender, EventArgs e )
        {
            if ( !AllocConsole() )
                 MessageBox.Show("Failed");
            Console.WriteLine("test");
            string input = Console.ReadLine();
            MessageBox.Show(input);
        }
    }
}

о! Вы хотите консоль в окне. Вы можете написать свой собственный и вход в канал и из stdout и stdin. Или вы можете imbed powershell, но нет запеченного в управлении. – повтор 12 октября 10 в 19: 49


вы можете сделать это в основном:

  1. создание процесса cmd
  2. установка родительского элемента этого процесса в виде формы (или какой-либо панели, например)
  3. подключите события для изменения размера при необходимости
  4. убить процесс, когда основной процесс больше не нуждается в процессе cmd.

для этого вам нужно вызвать API напрямую (вам нужны SetParent и SetWindowPos). Вот статья о том, как это сделать с помощью примеры:

http://www.geekpedia.com/tutorial230_Capturing-Applications-in-a-Form-with-API-Calls.html