Я хочу, чтобы пользователь мог иметь некоторые данные уже во входном потоке, которые они могут изменить. Я посмотрел на функцию ниже, но я не уверен, как получить дескриптор консоли из класса консоли.
[DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool WriteConsoleInput(
IntPtr hConsoleInput,
[Out] INPUT_RECORD[] lpBuffer,
int nLength,
out int lpNumberOfEventsWritten);
public static void WriteConsoleInput()
{
UInt32 STD_INPUT_HANDLE = 0xfffffff6;
IntPtr hConsoleInput = GetStdHandle(STD_INPUT_HANDLE);
INPUT_RECORD[] lpBuffer = new INPUT_RECORD[2];
// I tried using uChar (short) as well.
lpBuffer[0].Event.KeyEvent.wVirtualKeyCode = 0x41; // A
lpBuffer[1].Event.KeyEvent.wVirtualKeyCode = 0x5A; // Z
int nLength = lpBuffer.Length;
int lpNumberOfEventsWritten;
if (!WriteConsoleInput(
hConsoleInput,
lpBuffer,
nLength,
out lpNumberOfEventsWritten))
{
// Don't get here.
Console.WriteLine("Error: {0}", GetLastError());
}
} // A breakpoint here shows that lpNumberOfEventsWritten is 2
...
...
...
Console.Write("Input something: ");
WriteConsoleInput();
String input = Console.ReadLine();
Console.WriteLine("input = {0}", input);
Я не вижу ничего на экране за "Ввести что-то:". Если я просто нажму Enter, input будет пустой строкой.