tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
306
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    634
    Hallo, ich würde gerne fremde Konsolenprogramme in meinem Projekt nutzen. Wie man diese Ausführt und die Ausgabe abfängt habe ich bereits hier gefunden: http://www.java2s.com/Code/CSharp/De...cessOutput.htm
    Jetzt habe ich aber ein Problem bei Programmen, die nicht sofort terminieren und eine Ausgabe liefern. Z.B. bei Netzwerk-Programmen wird ja oft beim öffnen nur der Server oder so übergeben und das Programm startet dann (z.B. netzp.exe 123.123.123.123). Dann kann man. "GET 123.htm" schreiben und erhält dann eine Antwort. Erst mit "quit" wird das Programm geschlossen.
    Mein Problem ist jetzt, dass ich gerne die Ausgabe von "GET 123.htm" abfangen würde. Hierzu hab ich aber leider nichts gefunden...
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Das, was du brauchst, nennt sich Pipe
    Google gibt da genug dazu
     

  3. #3
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    Ich hab nicht ganz verstanden, was du vor hast. Aber ich geh davon aus, dass du die Anwendung über die Process-Klasse startest. Über das Property StandardOutput können Ausgaben des Prozess abgefragt werden.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  4. #4
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    634
    Sorry für die Ungenauigkeit, war gestern etwas in Eile.
    Also ich hab das ganze mal an einem Beispiel getestet. Das soll jetzt mal das Konsolenprogramm sein:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Console.WriteLine("Hier wird eine 1 an ein Wort gehängt!");
    string asd = "";
    while (!asd.Equals("quit"))
    {
       asd = Console.In.ReadLine();
       string tmp = asd + "1";
       Console.WriteLine("Das ergibt " + tmp);
    }
    Console.WriteLine("Ende!");
    Jetzt habe ich es so hinbekommen zumindest das "Hier wird eine 1..." zu bekommen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Process p = new Process();
    p.StartInfo.FileName = "constest.exe";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    string output = p.StandardOutput.ReadToEnd();
    textBox1.Text = output;
    Allerdings hat sich dabei ein Konsolenfenster geöffnet und ist dann hängengeblieben und ich musste es schließen.
    Jetzt würde ich gerne, am besten ohne das sich ein Konsolenfenster öffnet, Strings an das Konsolenprogramm übergeben und das Ergebnis auslesen. Also in diesem Fall will ich z.B. "asd" übergeben und "Das ergibt asd1" zurückbekommen.
    Irgendwie muss das ja gehen weil doch z.B. die ganzen Java Framworks auch nur die Konsolenanwendungen einbinden oder?
    Danke!
     

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Zitat Zitat von kuhlmaehn Beitrag anzeigen
    Sorry für die Ungenauigkeit, war gestern etwas in Eile.
    Also ich hab das ganze mal an einem Beispiel getestet. Das soll jetzt mal das Konsolenprogramm sein:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Console.WriteLine("Hier wird eine 1 an ein Wort gehängt!");
    string asd = "";
    while (!asd.Equals("quit"))
    {
       asd = Console.In.ReadLine();
       string tmp = asd + "1";
       Console.WriteLine("Das ergibt " + tmp);
    }
    Console.WriteLine("Ende!");
    Jetzt habe ich es so hinbekommen zumindest das "Hier wird eine 1..." zu bekommen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Process p = new Process();
    p.StartInfo.FileName = "constest.exe";
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();
    string output = p.StandardOutput.ReadToEnd();
    textBox1.Text = output;
    Allerdings hat sich dabei ein Konsolenfenster geöffnet und ist dann hängengeblieben und ich musste es schließen.
    Natürlich ist es "hängengeblieben" - es wartete auf eine Eingabe.
    Zitat Zitat von kuhlmaehn Beitrag anzeigen
    Jetzt würde ich gerne, am besten ohne das sich ein Konsolenfenster öffnet, Strings an das Konsolenprogramm übergeben und das Ergebnis auslesen. Also in diesem Fall will ich z.B. "asd" übergeben und "Das ergibt asd1" zurückbekommen.
    Code csharp:
    1
    2
    3
    
    p.StartInfo.RedirectStandardInput = true;
    // ...
    p.StandardInput.WriteLine("asd\nquit");

    Damit sich kein Konsolenfenster öffnet mußt du eben kein Konsolenprogramm erstellen.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  6. #6
    Avatar von kuhlmaehn
    kuhlmaehn kuhlmaehn ist offline Mitglied Platin
    Registriert seit
    May 2003
    Beiträge
    634
    Ah super dank dir. Eigentlich ja ganz logisch aber da bin ich nicht drauf gekommen
    Mh ok mit dem Konsolen-Fenster hast du recht. Dann wird es wohl bei den Javaprogrammen einen Parameter geben, dass die Konsole nicht geöffnet wird.
    Danke nochmal allen!
     

Ähnliche Themen

  1. weiteren Code nach dispatcher.forward(request, response); nicht ausführen - wie?
    Von Kryptaesthesie im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 09.03.09, 10:01
  2. Standby Modus spinnt nach dem Einsetzen eines weiteren Laufwerks
    Von der_koarl im Forum Microsoft Windows
    Antworten: 0
    Letzter Beitrag: 29.07.08, 11:12
  3. Antworten: 4
    Letzter Beitrag: 16.07.08, 14:26
  4. Antworten: 2
    Letzter Beitrag: 11.11.04, 14:32
  5. anzeigeprobs nach einfügen einer weiteren tabelle ...
    Von Prailer im Forum HTML & XHTML
    Antworten: 3
    Letzter Beitrag: 25.01.02, 05:05