Как включить консоль в Winforms? - PullRequest
7 голосов
/ 12 октября 2010

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

Ответы [ 3 ]

8 голосов
/ 12 октября 2010

Все, что вам нужно сделать, это вызвать функцию 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);
        }
    }
}
3 голосов
/ 22 июня 2011

О! Вы хотите консоль в окне. Вы можете написать свой собственный и ввод данных в / из stdout и stdin. Или вы можете добавить PowerShell, но нет контроля. - перезапуск 12 октября 2010 года в 19: 49

2 голосов
/ 13 октября 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...