Weil ich heute gut gelaunt bin ;)
1 |
|
2 | using System;
|
3 | using System.Diagnostics;
|
4 | using System.Windows.Forms;
|
5 | namespace Test {
|
6 | class Form1 : Form {
|
7 | TextBox m_tbTest;
|
8 |
|
9 | public Form1() {
|
10 | m_tbTest = new TextBox();
|
11 | m_tbTest.Multiline = true;
|
12 | m_tbTest.Dock = DockStyle.Fill;
|
13 | Controls.Add(m_tbTest);
|
14 | //~~~~~~~~~~~~~~~~~~~~~~~~~~
|
15 | Process p = new Process();
|
16 | p.StartInfo.FileName = "Test.exe";
|
17 | p.StartInfo.RedirectStandardOutput = true;
|
18 | p.StartInfo.UseShellExecute = false;
|
19 | p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
|
20 | p.Start();
|
21 | p.BeginOutputReadLine();
|
22 | }
|
23 |
|
24 | private void p_OutputDataReceived(object sender, DataReceivedEventArgs e) {
|
25 | if (this.InvokeRequired) {
|
26 | this.BeginInvoke(new DataReceivedEventHandler(p_OutputDataReceived), sender, e);
|
27 | } else {
|
28 | m_tbTest.Text += e.Data + Environment.NewLine;
|
29 | }
|
30 | }
|
31 |
|
32 | static void Main(string[] args) {
|
33 | Application.Run(new Form1());
|
34 | }
|
35 | }
|
36 | }
|
Bei dem Beispiel muss das Zielprogramm aus diesem Programm heraus
gestartet werden. Wie man von einem laufenden Prozess die
Standardausgabe umleitet weis ich, wie bereits erwähnt, leider auch
nicht.
Fallst du trotzdem in diese Richtung weiter recherchieren willst könnten
dir Folgende Methoden hilfreich sein:
1 | Process p1 = Process.GetProcessById(...);
|
2 | Process[] pArr1 = Process.GetProcesses();
|
3 | Process[] pArr2 = Process.GetProcessesByName(...);
|
Damit kannst du dich an einen Laufenden Prozess ranhängen. Eventuell
kannst du mittels WinAPI und dem hieraus erhaltenen Process-Handle die
Standardausgabe auch nach dem Start noch umleiten.
greets
PS: In der Zwischenzeit hättest du ruhig ein wenig Eigeninitiative
zeigen können: mit dem Stichwörtern Process+MSDN finden sich genaue
Beschreibungen + Beispiele