IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
exponsk
Člen
Avatar
exponsk:22.12.2014 11:42

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:22.12.2014 12:58

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:22.12.2014 13:05

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:22.12.2014 13:10

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:22.12.2014 14:29
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:22.12.2014 14:49

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:22.12.2014 14:51

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:22.12.2014 14:52

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:22.12.2014 14:58

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í
+2,50 Kč
Řešení problému
Nahoru Odpovědět
22.12.2014 14:58
Když umřít, tak online!!!
Avatar
exponsk
Člen
Avatar
exponsk:22.12.2014 15:01

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:22.12.2014 15:01

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:22.12.2014 15:18

Uz to funguje parada :) DAKUJEEEEEEEEEEMMMM

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

Š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:22.12.2014 15:51

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.