Die Löstung ist hier "notmalerweise"
immer, dass man die Consolenanwendung startet und ihr ein anderes STDIN mitgibt, also einen Stream (Pipe), über Welchen man was dort rein gibt.
Und will man auf Ausgaben reagieren, dann auch noch STDOUT/STDERR auf eine Pipe umleiten, welche man dann ausliest.
Wie z.B. das | (Piepe) bzw. > und < in der CMD.
CreateProcess > STARTUPINFO.hStdInput
Klar, eventuell kann man auch das Fenster suchen und Tastendrücke simulieren, aber der Spaß beginnt schon damit, dass es viele Terminal-Programme gibt (nicht mehr nur die CMD.exe) und Jeder anders reagiert.
z.B. das neue Windows Terminal verarbeitet Tastatur/Maus über
DirectX. (wenn ich mich nicht irre)
Aber sowas macht man nicht, da es zu unsicher ist.
Wenn beide Seiten von dir kommen, dann wäre es kein Problem einen anderen Weg zu gehen, also z.B. eine "globale" NamedPipe auf die dein zusätzlich Programm lauscht und an Welche das andere Programm etwas sendet.
Oder ein unsichtbares MessageOnly-Fenster generieren (so ähnlich wie das Application im Delphi), irgendwie dessen
Handle rausgeben oder abrufen oder ihm einen bekannten Namen zu geben und dann via SendMessage etwas empfangen (WM_SETTEXT, WM_COPY oder sonstwas).
Oder ansonsten jegliche andere
IPC-Lösung, inkl.
DDE,
ActiveX und Sonstwas.