У меня есть давно работающее консольное приложение, которое запускается с Windows или может быть запущено приложением, которое я пишу.
У меня был ограниченный успех при отправке ключей в консольное приложение, и я даже не знаю, с чего начать чтение вывода из него. Возможно ли чтение вывода из консольного приложения, которое даже не запущено запрашивающим приложением?
В любом случае, два вопроса...
Как я могу эмулировать клавишу «возврат»? (Вот что я должен отправить определенные ключи в приложение, и приложение действительно получает ключи, но я не могу найти, как эмулировать клавишу ENTER.
do {
hwndCurrentWindow = FindWindowA("ConsoleWindowClass", "My Other Console App");
if (hwndCurrentWindow == 0) {
break;
}
iStringLen = GetWindowTextW (hwndCurrentWindow, wcharWindowText, 500);
if (iStringLen == 0) {
continue;
}
SetActiveWindow(hwndCurrentWindow);
printf("Sending '?'");
SendMessage(hwndCurrentWindow, WM_CHAR, '?', 0);
// '?' shows up in console app
printf("Sending 'a'");
SendMessage(hwndCurrentWindow, WM_CHAR, 'a', 0);
// 'a' shows up in console app.
//printf("Sending RETURN");
//SendMessage(hwndCurrentWindow, WM_CHAR, VK_RETURN, 0);
// nothing happens
break;
} while (hwndCurrentWindow);
Как я могу прочитать данные из консольного приложения? (Если бы другое консольное приложение не работало непрерывно, я бы просто записал вывод в файл и прочитал его... черт возьми, это все еще может работать)
Я рассмотрел несколько вариантов, но многие из тех, что я прочитал, предназначены для C#, и, к сожалению, я не могу позволить себе роскошь менять языки. Есть ли аналогичные варианты для C++?
Соберите вывод stdout из консольного приложения с помощью C++. один не работает, потому что приложение не закрывается. Так что он просто висит и ждет. Постоянное добавление в буфер.
Перехватывать консольный ввод-вывод
Захват исполняемого вывода C# из другой программы C#< /а>
Спасибо за любую помощь, которую вы можете предоставить!