title image


Smiley Re: Abfangen von Ausgaben anderer Programme
Hallo Karl,Das Beispiel stammt aus einer Applikation, die unter Win98 läuft. Ich habe es soeben unter Win98 getestet - einwandfrei.Dann habe ich das Beispiel kompiliert und auf einen NT4 / SP5 Rechner ausgeführt und erhalte unerwarteterweise die Fehlermeldung, daß eine Zugriffsnummer nicht definiert sei.Also läuft es in der von mir vorgestellten Form nicht unter NT4.Da meine Entwicklungsumbebung unter Win98 1stEd läuft, habe ich auch nicht die Möglichkeit, das ganze auf die Schnelle zu debuggen.Jedoch wüsste ich, in welcher Richtung ich suchen würde:Wenn du den Code studierst, wirst Du sehen, daß er mit Pipes arbeitet. Pipes sind vereinfacht gesagt Nachrichtenkanäle. Man kann Pipes zwischen zwei Prozessen erstellen und die Prozesse können dann über diese Pipes miteinander kommunizieren.In meinem Beispiel lenke ich die Standardausgabe "StdOut" auf eine(n) Pipe um.Unter Win98 kann man nur unbenannte Pipes erstellen, dazu verwende ich die API - Funktion CreatePipe().Den entsprechenden Handle übergebe ich dann der Funktion CreateProcess() und lese danach in einer Schleife mit PeekNamedPipe() den Pipe-Buffer aus, bis der Prozess beendet ist.Unter WinNT ist zusätzlich die Funktion CreateNamedPipe() verfügbar, mit der man benannte Pipes erstellen kann - vielleicht ist das die Lösung. Ich jedenfalls würde in dieser Richtung weiterforschen.Weitere Infos:Q190351- HOWTO: Spawn Console Process with Redirected Standard HandlesQ150956 - INFO: Redirection Issues on Windows 95 MS-DOS ApplicationsInsbesondere der erste Artikel ist sehr interessant, auch wenn der Beispielcode in C++ geschrieben ist. Verstehen kann man ihn allemal.Viel Erfolg!Thomas Prötzschcu
Thomas Prötzsch

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: