winapi — ввод и вывод текста из долго работающего консольного приложения (C ++)

У меня давно запущено консольное приложение, которое запускается с Windows или может быть запущено приложением, которое я пишу.

У меня был ограниченный успех при отправке ключей в консольное приложение, и я даже не знаю, с чего начать чтение результатов из него. Возможно ли чтение вывода из консольного приложения, которое даже не запускается запрашивающим приложением?

В любом случае, два вопроса …

Как я могу эмулировать ключ возврата? (Вот то, что я должен отправить конкретные ключи в приложение, и приложение получает ключи, но я не могу найти, как эмулировать клавишу ВВОД.

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 #

Спасибо за любую помощь, вы можете предоставить!

0

Решение

Вам нужно перенаправить ввод / вывод из этого приложения в основное приложение. Вот статья о том, что: Создание дочернего процесса с перенаправленным вводом и выводом

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]