[C#] - Starta t.ex cmd.exe och skicka med argument. Problem!

Permalänk
Medlem

[C#] - Starta t.ex cmd.exe och skicka med argument. Problem!

Hej.

Jag vill t.ex kunna öppna tclsh.exe och skicka med en *.tcl som argument.

Har även testat att öppna cmd.exe och skicka "/C tclsh.exe fil.tcl" som argument, men utan resultat.

För att överhuvudtaget testa det hela så testar jag att öppna cmd.exe och skicka kommandot "help" enligt nedanstående kod. Kommandofönstret öppnas men stängs ner lika fort. Hur får jag det att inte stängas ner?

System.Diagnostics.Process TestEngine = new System.Diagnostics.Process(); TestEngine.StartInfo.FileName = "cmd.exe"; TestEngine.StartInfo.Arguments = "/C help"; TestEngine.Start(); TestEngine.WaitForExit();

Om jag istället väljer att skriva TestEngine.StartInfo.FileName = "tclshl.exe"; och samma argument, så händer samma sak, öppnas och stängs.

I mina tankar så vill jag lösa det hela med:

TestEngine.StartInfo.FileName = "tclshl.exe"; TestEngine.StartInfo.Arguments = "/C fil.tcl";

förslag?

Permalänk

Testa nåt sånt här:

using System; using System.Diagnostics; namespace RedirectOutputExample{ class Program{ static void Main(){ Process p = new Process() p.StartInfo = new ProcessStartInfo( "tclshl.exe", "/C fil.tcl" ) { RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); Console.WriteLine(output); Console.Read() }}}

Om du inte kör en konsolapp så kan du ju göra något annat med outputen men du kan iaf läsa av den så.

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Hedersmedlem

cmd /k får cmd-fönstret att stanna öppet. /c stänger efter utfört kommando.

Detta från Kör.. i Startmenyn men borde fungera likadant i kod

Visa signatur

Kontaktas via PM eller IRC [color="green"]#Sweclockers.com [/color]@ quakenet.org Mina regler: §1 Jag har alltid rätt. §2 Jag KAN ha fel men då inträder §1 automatiskt.

Permalänk
Medlem

Ja, så enkelt var det visst.

Passar på att fråga om en sak till ang. mitt program.
Jag kommer ha två knappar och koden från den första knappen ser ut såhär:

KNAPP1:

System.Diagnostics.Process TestEngine = new System.Diagnostics.Process(); TestEngine.StartInfo.FileName = "cmd.exe"; TestEngine.StartInfo.Arguments = "/K help"; TestEngine.Start();

Nu vill jag ha en till knapp, som utan att starta en ny process, skickar ett argument till cmd.exe (samma fönster således).
Jag har testat att använda System.Diagnostics.Process.GetProcessessByName() men får det inte att funka.

KNAPP2:

TestEngine.StartInfo.Arguments = "/K ipconfig";

Hur löser jag det?