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