Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#AllocConsole重定向输入_C#_Winforms_Console - Fatal编程技术网

C#AllocConsole重定向输入

C#AllocConsole重定向输入,c#,winforms,console,C#,Winforms,Console,我有一个Winforms应用程序,我想与之一起使用控制台,到目前为止,我使用AllocConsole()调用了它,并且可以按预期通过console.WriteLine成功地将内容打印到窗口 但是,用户无法在窗口中键入内容。我有没有遗漏什么,或者这是不可能实现的 编辑1:尝试使用SetConsoleMode Pinvoke,但仍无法输入控制台窗口。代码如下所示: [DllImport("kernel32")] static extern bool AllocConsole();

我有一个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();

    }
SetConsoleMode可能会有所帮助。