RedirectStandardOutput to richTextBox1 from cmd – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

RedirectStandardOutput to richTextBox1 from cmd – .NET – Fórum – Programujte.comRedirectStandardOutput to richTextBox1 from cmd – .NET – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
davhoos0
Duch
29. 1. 2022   #1
-
0
-

Ahoj, nedaří se mi přesměrovat výstup z příkazového řádku/ Wget aplikace do richTextBox1.

Najde se tu nějaká dobrá duše, která by mě pomohla nalézt chybu? 

Používám tento kód, ale něco někde přehlížím a nefunguje :-(

Vyskočí my cmd okno,  wget provede stažení webu, ale přesměrování výstupu do richTextBox1 se neprovede.

Zobrazí se chyba: 

Děkuji za pomoc.

 Proud StandardOut nebyl přesměrován nebo proces dosud nebyl spuštěn.

using System.Diagnostics;
using System.IO;

        private void button1_Click(object sender, EventArgs e)
        {


            try
            { 

            Process prc = new Process();
            string strCmd = ($"/c www.google.com");
                prc.StartInfo.RedirectStandardOutput = true;
                prc.StartInfo.RedirectStandardError = true;
                prc.StartInfo.RedirectStandardInput = true;
                prc.StartInfo.UseShellExecute = false;
                prc.StartInfo.CreateNoWindow = true;
                prc = System.Diagnostics.Process.Start("wget.exe", strCmd);
            

            StreamReader sr = prc.StandardOutput;

            string line = prc.StandardOutput.ReadToEnd();
                richTextBox1.Text = line;


            //MessageBox.Show("neco se stalo!");
                prc.WaitForExit();
            }

            catch (Exception ex) 
                {
                MessageBox.Show(ex.Message);
            }
	}
Nahlásit jako SPAM
IP: 213.192.33.–
BDS+3
Věrný člen
29. 1. 2022   #2
-
0
-

#1 davhoos
Nezkoušel jsem to, zkus to takto: 

using (Process process = new Process())
            {
                process.StartInfo.FileName = "wget.exe";
                process.StartInfo.Arguments = $"/c www.google.com";
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardOutput = true;
                process.Start();

                StreamReader reader = process.StandardOutput;
                string txt = reader.ReadToEnd();
                richTextBox1.Text = txt;

                process.WaitForExit();
            }

můžu tam mít i chybu.

Tímto "prc = System.D..." zahodíš všechna předchozí nastavení

Nahlásit jako SPAM
IP: 185.69.68.–
W10 :)
davhoos0
Duch
29. 1. 2022   #3
-
0
-

#2 BDS
Díky za tip, avšak vyskočí pouze okno příkazáku, načež zmizí a výstup nikde :-( Wget, ale akci provede jako v originálním kódu. Je to divné... , Wget je utilita, která se používá přes cmd, chtěl jsem jí udělat "ksicht".

Nahlásit jako SPAM
IP: 213.192.33.–
BDS+3
Věrný člen
29. 1. 2022   #4
-
0
-

#3 davhoos
já jsem s tím nikdy nedělal,

nemá být process.WaitForExit(); před StreamReader reader = ...?

Nahlásit jako SPAM
IP: 185.69.68.–
W10 :)
gna
~ Anonymní uživatel
1698 příspěvků
29. 1. 2022   #5
-
+1
-
Zajímavé

wget vypisuje na stderr a jde to změnit parametrem -o-.

Nahlásit jako SPAM
IP: 213.211.51.–
davhoos0
Duch
29. 1. 2022   #6
-
0
-

#4 BDS
Děkuji, ale nepomohlo. Zkusil jsem místo wgetu zavolat ping přes cmd, nefunguje přesměrování... dle pokusu.

Vyskočí okno s příkazovým řádkem atd. ale nejde to do richTextBoxu1 :-(


Nahlásit jako SPAM
IP: 213.192.33.–
davhoos0
Duch
29. 1. 2022   #7
-
0
-

#5 gna
Neznám stderr , můžeš mi to prosím více rozvinout? 

Parametr -o vyzkouším.

Nahlásit jako SPAM
IP: 213.192.33.–
gna
~ Anonymní uživatel
1698 příspěvků
29. 1. 2022   #8
-
0
-

StandardError

Nahlásit jako SPAM
IP: 213.211.51.–
davhoos0
Duch
30. 1. 2022   #9
-
0
-

#8 gna
Super, díky moc. Parametr -o- funguje :-))))

            using (Process process = new Process())
            {
                process.StartInfo.FileName = "wget.exe";
                //process.StartInfo.Arguments = $"/c -o- www.google.com";
                process.StartInfo.Arguments = " -o- " + textBox1.Text;
                process.StartInfo.CreateNoWindow = true;
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardOutput = true;
                process.Start();

                string text = process.StandardOutput.ReadToEnd();
                richTextBox1.Text = text;
                process.WaitForExit();

            }
Nahlásit jako SPAM
IP: 213.192.33.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

CMD - příkaz — založil MASTERMAN

CMD pls help — založil Grant

Cmd a ASCII — založil Streko

Farebné pismo v cmd — založil bandidado

Cmd výstup (diakritika) — založil Miras

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032022 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý