Avatar
exponsk
Člen
Avatar
exponsk:

Caute, chcem v C# spustik konzolovu aplikaciu a pocas jej behu davat jej vystup na textBox.
Pouzivam to cez:
textBox1.Text = process.Standar­dOutput.ReadTo­End()

Problem vsak je ze toto mi dava len vystup pri ukonceny aplikacie ReadToEnd.
Potrebujem vsak vystup pocas behu aplikacie.

Som zaciatocnik tak prosim vysvetlit to nejako polopate.

Dakujem

 
Odpovědět 22.12.2014 11:42
Avatar
STP
Člen
Avatar
STP:

Vyzkoušej něco takového.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace smazatX
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program().StartAndLoop();
        }
        private void StartAndLoop()
        {
            Label label = new Label { Text = "" };
            Form form = new Form { Controls = { label } };
            new Thread(() => Application.Run(form)).Start();
            while (true)
            {
                string line = Console.ReadLine();
                Action updateText = () => label.Text = line;
                label.Invoke(updateText);
            }
        }
    }
}
Nahoru Odpovědět 22.12.2014 12:58
Když umřít, tak online!!!
Avatar
Odpovídá na exponsk
sadlomaslox25:

alternativne muzes pouzit event OutputDataReceived.
http://msdn.microsoft.com/….110%29.aspx

 
Nahoru Odpovědět 22.12.2014 13:05
Avatar
exponsk
Člen
Avatar
exponsk:

Caute, dakujem za odpoved. Ale ako to upravim ked mam teraz takyto tvar:

Process ScanMemory = new Process();
process.StartIn­fo.FileName = "C:\\program.exe";

process.StartIn­fo.UseShellExe­cute = false;
process.StartIn­fo.RedirectStan­dardOutput = true;
process.StartIn­fo.CreateNoWin­dow = true;
process.Start();
textBox1.Text = process.Standar­dOutput.ReadTo­End();

Vite mi to tu prosim nejako upravit. Som uplny zaciatocnik :(

 
Nahoru Odpovědět 22.12.2014 13:10
Avatar
STP
Člen
Avatar
STP:
private Process process;
       private StreamReader myStreamReader;
       private void Form1_Load(object sender, EventArgs e)
       {
           process = new Process();
           process.StartInfo.FileName = "C:\\__SMAZAT\\program.exe";
           process.StartInfo.UseShellExecute = false;
           process.StartInfo.RedirectStandardOutput = true;
           process.StartInfo.CreateNoWindow = true;

           process.Start();
           timer1.Start();
       }
       private void timer1_Tick(object sender, EventArgs e)
       {
           try
           {
               myStreamReader = process.StandardOutput;
               if (myStreamReader == null) return;
               label1.Text += myStreamReader.ReadLine();
           }
           catch
           {
           }
       }
Nahoru Odpovědět 22.12.2014 14:29
Když umřít, tak online!!!
Avatar
exponsk
Člen
Avatar
exponsk:

Diky ale vypisuje mi tuto chybu
The name 'timer1' does not exist in the current context

 
Nahoru Odpovědět 22.12.2014 14:49
Avatar
exponsk
Člen
Avatar
exponsk:

using System;
using System.Collec­tions.Generic;
using System.Componen­tModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threadin­g.Tasks;
using System.Window­s.Forms;
using System.Diagnostics;
using System.IO;

namespace TestA1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeCom­ponent();
}

private Process process;
private StreamReader myStreamReader;

private void button1_Click(ob­ject sender, EventArgs e)
{

process = new Process();
process.StartIn­fo.FileName = "C:\\__SMAZAT\\pro­gram.exe";
process.StartIn­fo.UseShellExe­cute = false;
process.StartIn­fo.RedirectStan­dardOutput = true;
process.StartIn­fo.CreateNoWin­dow = true;

process.Start();
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
myStreamReader = process.Standar­dOutput;
if (myStreamReader == null) return;
label1.Text += myStreamReader­.ReadLine();
}
catch
{
}
}

 
Nahoru Odpovědět 22.12.2014 14:51
Avatar
STP
Člen
Avatar
Odpovídá na exponsk
STP:

Přidej Timer a na jeho Tick (timer1_Tick) se ptám co říká ta konzolovka :)

Nahoru Odpovědět 22.12.2014 14:52
Když umřít, tak online!!!
Avatar
STP
Člen
Avatar
Odpovídá na exponsk
STP:

Zde to je celé. Ten timer tam mít nemusíš. Záleží co to bude dělat a jak ti to bude vyhovovat:)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SmazatXX
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private Process process;
        private StreamReader myStreamReader;
        private System.Windows.Forms.Timer timer1;

        private void Form1_Load(object sender, EventArgs e)
        {
            process = new Process();
            process.StartInfo.FileName = "C:\\__SMAZAT\\program.exe";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.CreateNoWindow = true;

            process.Start();

            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
            timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                myStreamReader = process.StandardOutput;
                if (myStreamReader == null) return;
                label1.Text += myStreamReader.ReadLine();
            }
            catch
            {
            }
        }
    }
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 22.12.2014 14:58
Když umřít, tak online!!!
Avatar
exponsk
Člen
Avatar
exponsk:

Pridal som ho tam uz to nevyhadzuje chybu ale nic to nevypisuje v textboxe

 
Nahoru Odpovědět 22.12.2014 15:01
Avatar
exponsk
Člen
Avatar
exponsk:

Pridal som ho tam uz to nevyhadzuje chybu ale nic to nevypisuje v textboxe

 
Nahoru Odpovědět 22.12.2014 15:01
Avatar
exponsk
Člen
Avatar
exponsk:

Uz to funguje parada :) DAKUJEEEEEEEEEEMMMM

 
Nahoru Odpovědět 22.12.2014 15:18
Avatar
STP
Člen
Avatar
STP:

ŠIKULA! :)

Editováno 22.12.2014 15:20
Nahoru Odpovědět 22.12.2014 15:20
Když umřít, tak online!!!
Avatar
exponsk
Člen
Avatar
exponsk:

Teraz som prisiel na jeden problem - nedava mi to do riadkov alebo iba do jedneho.

 
Nahoru Odpovědět 22.12.2014 15:51
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.