Autor Beitrag
ala86
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 27.01.11 09:31 
Hallo zusammen

Ich starte mit C# eine Batchdatei und leite den Output in ein Texfile um. Dies klappt wunderbar, jedoch werden die Pausen welche im Batch hinterlegt sind einfach übergangen.

Weiss jemand wie ich das unterbinden kann, sprich das zwar die Ausgabe in der Textbox erfolgt, es sich jedoch genau so verhält wie wenn es in der Konsole gestartet wäre.
Pause wird als Pause interpretiert und mit Enter geht es weiter bis zur nächsten Pause.

So wie ich das sehe wird der Process geschlossen und nicht am laufen gehalten, wie es eigentlich sein müsste wenn eine Pause kommt...


Hoffe ich habe mich einigermassen verständlich ausgedrückt.

Code zum Starten der Batch Datei und umleiten des Output in Textbox:

C#-Code:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
private void button1_Click(object sender, EventArgs e)
        {
            oraHome = textBox1.Text;
            oraRoot = textBox2.Text;
            new_id = textBox3.Text;
            dump_dir = textBox4.Text;
            pp_dir = textBox5.Text;


               Process myProcess = new Process();

               ProcessStartInfo myProcessStartInfo =
                   new ProcessStartInfo("cmd.exe""/C" + "C:\\temp\\test.cmd " + oraHome + " " + oraRoot + " " + new_id + " " + dump_dir + " " + pp_dir);
               myProcessStartInfo.UseShellExecute = false;
               myProcessStartInfo.RedirectStandardOutput = true;

               myProcess.StartInfo = myProcessStartInfo;
               myProcess.Start();

               StreamReader myStreamReader = myProcess.StandardOutput;

               // Read the standard output of the spawned process.
               string myString = myStreamReader.ReadToEnd();

               textBox6.Text = myString;




               myProcess.Close();

        }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus WinForms verschoben am Do 27.01.2011 um 08:58
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 27.01.11 11:27 
Der Batch läuft im Process der cmd.exe und nur für diesen Process gilt das 'Pause' Command. Wäre ja noch schöner wenn der einfach so irgendwelche anderen Prozesse beeinflussen würde. Nur weil deine Process Klasse eine Referenz auf diesen Prozess hält und die Ein/Ausgabe umlenkt hast du noch keine Sonderechte bezüglich des anderen Prozesses. Wenn du auf das Ende des Prozesses warten willst registriere den Exited Event oder überprüfe in einer Schleife die HasExited Property. Und frühestens nach dem Ende des Prozesses solltest du Close aufrufen.