Pobieranie informacji z innej aplikacji konsolowej w win32

0

Witam!
Mam pytanie:
Macie jakis pomysl jak mozna pobrac informacje z innej odpalonej aplikacji konsolowej? Chodzi dokladnie o tekst jaki jest w tej aplikacji obecnie wyswietlony.

Normalnie w aplikacji okienkowej uzylbym FindWindow i SendMessage z WM_GETTEXT.
A jesli chodzi o konsolowa to wlasnie nie mam pojecia :(

Macie jakis pomysl?
Prosze o mozliwie najszybsza odpowiedz.

Mozecie odpowiedz oprzec na dowolnym jezyku programowania (o ile oczywiscie chcecie).
Ja to i tak przerobie na ten, ktorego uzywam.

Pozdrawiam
KlimaX

0

Zakładam że znasz pid procesu. Otwórz process, uruchom w nim wątek w punkcie GetStdHandle, a jako parametr podaj STD_OUTPUT_HANDLE. Zaczekaj aż wątek zakończy, pobierz jego ExitCode i zduplikuj tą wartość do swojego procesu za pomocą DuplicateHandle.

Mając już zduplikowany uchwyt do bufora konsoli, użyj funkcji ReadConsoleOutputCharacter, lub co tam chcesz odczytać.

Edit: sposób odpada, Console handles can be duplicated for use only in the same process.
DuplicateHandle zwraca błąd.

Sposób 2:
Skompiluj swój program tak, by nie otwierał konsoli.

AttachConsole(pid)
HANDLE hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfo(hConsoleOut)
ReadConsoleOutputCharacter(hConsoleOut)
FreeConsole()
0

Poszukaj na forum pod hasłem ExecuteConsole.

Przy okazji: co ma problem z obsługa konsoli do inżynierii programowania?!

1 użytkowników online, w tym zalogowanych: 0, gości: 1