interaktion mit anderen Programmen moeglich?



  • Hallo,

    ist es möglich Zeilen aus einem laufenden Terminalemulator auszulesen, bzw. ihm über stdin o.ä. Werte zu übergeben?

    Wenn ihr mir Stichwörter für die Suche geben könntet, würde mir das sicherlich auch erst mal weiterhelfen.

    Gruß



  • ich will hier nicht herumtrollen 🙄

    bis jetzt habe ich mich mit C auseinandergesetzt und würde gerne schauen wie man den Übergang zur Winapi hinbekommt. Mir geht es erstmal nur um das Verständnis, ob mein Vorhaben funktionieren könnte.
    Stdin müsste ich höchstwarscheinlich über Pipes versuchen zu steuern, richtig? Aber wie davor vorgehen, mit Findwindow das Fenster raussuchen und dann über eine Pipe Daten verschicken?

    Leute ich will doch nur etwas lernen 😃



  • Wenn ich das richtig verstehe, suchst du nach einem WIN-Equivalent zu popen ? Dann schau doch mal hier:

    https://msdn.microsoft.com/en-us/library/aa365782(VS.85).aspx
    https://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx



  • Wenn ich ihn richtig verstehe will er etwas machen was man so nicht machen kann.

    Er schreibt "Zeilen aus einem laufenden Terminalemulator auszulesen" - ich wüsste nicht wie das mit Redirection der Standard-Input/Standard-Output Handles gehen sollte.

    Wenn er den Terminalemulator dagegen selbst starten kann, wäre vermutlich das einfachste selbst einen Terminalemulator zu schreiben.

    Offset schrieb:

    Leute ich will doch nur etwas lernen 😃

    Wieso kommen die Leute die "doch nur was lernen" wollen immer mit so komischen Vorhaben an? Wieso geht's dabei so oft darum mit irgendwelchen fertigen Programmen in einer Art und Weise zu interagieren die nicht vorgesehen ist? Und wieso stellen sich die Kids das alles so einfach vor?



  • hustbaer schrieb:

    Wieso kommen die Leute die "doch nur was lernen" wollen immer mit so komischen Vorhaben an? Wieso geht's dabei so oft darum mit irgendwelchen fertigen Programmen in einer Art und Weise zu interagieren die nicht vorgesehen ist? Und wieso stellen sich die Kids das alles so einfach vor?

    lol, ersetze "Leute" und "Kids" durch "meine Chefs" und Du hast meinen Tagesablauf.

    Klar, daß die Software schon verkauft ist, weil nur um festzustellen OB das möglich ist, braucht man keine Informatiker, dazu reicht es, auf die CeBit zu gehen, zu schauen, was andere schon verkaufen. Die Informatiker dann müssen nur noch ausführen.



  • Hihi, ja, ich weiss was du meinst.
    Die Fragen waren auch eher rhetorisch, ich weiss ja selbst warum das so ist - bzw. hab ne mMn. ganz gute Theorie dazu. 😉



  • Fake oder Echt schrieb:

    Wenn ich das richtig verstehe, suchst du nach einem WIN-Equivalent zu popen ? Dann schau doch mal hier:

    https://msdn.microsoft.com/en-us/library/aa365782(VS.85).aspx
    https://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx

    Und wenn Du Dich mit C++ auseinanderzusetzen bereit bist, gibt es hier eine fertige Klasse, die das Ganze mit der WinAPI bewerkstelligt:
    https://www.c-plusplus.net/forum/248213-full



  • Danke erst mal für die Links, ich werde sie mir anschauen. Den Emulator kann ich mit Parametern starten, dazu auch ein Parameter für ein Logfile, woraus ich dann die aktuellen Zeilen parsen könnte.
    https://ttssh2.osdn.jp/manual/en/commandline/teraterm.html

    u.a. gibt auch den Parameter /NAMEDPIPE Named pipe(\<ServerName>\pipe\<PipeName>)
    würde heißen, wenn ich mich mit dem Thema Pipes beschäftige könnte ich mir ggf. das Logfile sparen und direkt mit meinem Programm, über eine Pipe, mit dem Emulator kommunizieren?



  • Offset schrieb:

    könnte

    Ja. Was Named Pipes sind bzw. wie man die einsetzen kann findest du bestimmt selbst schnell raus.



  • Fungiert so ein Emulator als Server oder Client?

    Starte ich einen Server und übergebe dem Emulator den pipenamen, bleibt der Server bei ConnectNamedPipe hängen und wartet.

    Starte ich einen Client bricht dieser sofort bei WaitNamedClient ab(ohne Timeout) mit GetLastErrorcode 2.
    "If no instances of the specified named pipe exist, the WaitNamedPipe function returns immediately, regardless of the time-out value" wenn der Client sofort abbricht würde es ja eher heißen, dass der Emulator selber ein Client ist und garkeine Pipe existiert, richtig?



  • Offset schrieb:

    u.a. gibt auch den Parameter /NAMEDPIPE Named pipe(\<ServerName>\pipe\<PipeName>)
    würde heißen, wenn ich mich mit dem Thema Pipes beschäftige könnte ich mir ggf. das Logfile sparen und direkt mit meinem Programm, über eine Pipe, mit dem Emulator kommunizieren?

    Ziemlich sicher nicht.

    Bei einem Terminal-Emulator der einen Switch /NAMEDPIPE hat würde ich mal davon ausgehen dass man ihn damit anweisen kann die Terminal-Verbindung über die angegebene Named-Pipe aufzubauen.

    Nochmal der Tip: schreib doch selbst einen einfachen Terminal-Emulator - ist wirklich nicht besonders aufwendig.

    ps: Alternativ: Einen Open-Source Terminal-Emulator modifizieren. Ich kann jetzt kein Beispiel für einen Open-Source Terminal-Emulator nennen, aber ich denke mal da sollte 'was zu finden sein.



  • Tera Term ist doch sogar Open Source ...



  • Um so besser - hab einfach nicht nachgeguckt.



  • ich glaube da hörts dann aber auf bei mir, wenn ich mir den sourcecode so anschaue



  • Weil?
    So schrecklich?
    Oder einfach nur zu viel für dich?
    ...?



  • beides 😃

    die int main hab ich vergeblich gesucht 🙄


Anmelden zum Antworten