C#AllocConsole重定向输入

时间:2015-01-13 20:30:05

标签: c# winforms console

我有一个Winforms应用程序,我想使用控制台,到目前为止,我已经通过使用AllocConsole()来调用它,并且可以按预期成功地通过Console.WriteLine将内容打印到窗口。

但是,用户无法输入窗口。我有什么遗失或者这是不可能实现的吗?

编辑1:尝试使用SetConsoleMode Pinvoke但仍然无法输入到控制台窗口。代码如下所示:

[DllImport("kernel32")]
    static extern bool AllocConsole();

    [DllImport("kernel32.dll")]
    static extern IntPtr GetConsoleWindow();

    private enum ConsoleModes : uint
    {
        ENABLE_PROCESSED_INPUT = 0x0001,
        ENABLE_LINE_INPUT = 0x0002,
        ENABLE_ECHO_INPUT = 0x0004,
        ENABLE_WINDOW_INPUT = 0x0008,
        ENABLE_MOUSE_INPUT = 0x0010,
        ENABLE_INSERT_MODE = 0x0020,
        ENABLE_QUICK_EDIT_MODE = 0x0040,
        ENABLE_EXTENDED_FLAGS = 0x0080,
        ENABLE_AUTO_POSITION = 0x0100,
        ENABLE_PROCESSED_OUTPUT = 0x0001,
        ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002,
    }

    #endregion
    public Form1()
    {
        AllocConsole();
        Console.WriteLine("Hi.. Write Below");
        IntPtr ConInt = GetConsoleWindow();
        SetConsoleMode(ConInt, (uint)ConsoleModes.ENABLE_WINDOW_INPUT);

        InitializeComponent();

    }

0 个答案:

没有答案