Toto vlákno bylo označeno za vyřešené.
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);
}
}
BDS +3
Věrný člen
#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í
#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".
BDS +3
Věrný člen
#3 davhoos
já jsem s tím nikdy nedělal,
nemá být process.WaitForExit(); před StreamReader reader = ... ?
gna ~ Anonymní uživatel~ 1891 příspěvků
wget vypisuje na stderr a jde to změnit parametrem -o-.
#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 :-(
#5 gna
Neznám stderr , můžeš mi to prosím více rozvinout?
Parametr -o vyzkouším.
gna ~ Anonymní uživatel~ 1891 příspěvků
#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();
}
Zjistit počet nových příspěvků
Přidej příspěvek
Uživatelé prohlížející si toto vlákno Uživatelé on-line: 0 registrovaných, 38 hostů