Quote:
Originally Posted by FreddieMercury
Hallo Coders-Den,
leider habe ich ein Problem und ich finde keine Lösung. Bei Stackoverflow habe ich mal dazu was geschrieben und ich bin mal so frei, das zu zitieren:
In my application, there's a button "Start". Start should start a process featuring parameters. Regardless of the method I am using, it's just freezing then and doesn't throw any error at all. I tried to use
Code:
Process.Start(Environment.CurrentDirectory + "/test/testfile.exe", "1 8 EN");
as well as
Code:
Process test = new Process();
test.StartInfo.Arguments = "1 8 EN";
test.StartInfo.FileName = Environment.CurrentDirectory + "/test/testfile.exe";
test.Start();
I am using GhostTheme and a ghost button, I've tried a normal button but that didn't work either. Latter method worked for me just fine over the years, but apparently it does not any longer. It's just freezing when pressing the "Start" button. What to do?
Ich kann gar keinen Prozess starten, ob mit oder ohne Parametern ist egal, auch die auszuführende Datei selbst spielt offenbar keine Rolle. Weiß jemand mehr?
|
Lol. Eventuell die Backslashes falsch rum gemacht bei den Pfaden?
Man beachte den unterschied zwischen "\test\test.exe" und "/test/test.exe". Richtig ist normalerweise ersteres, wobei du es für C# entweder mit doppeltem Backslash oder mit nem @ davor schreiben musst.
Um das ganze unabhängig von der Eingabe zu testen:
Erstelle ein neues Consolenprogramm und füge folgendes Snippet in die Program.cs ein:
PHP Code:
class Program
{
static void Main(string[] args)
{
if (args.Length > 0)
{
Console.WriteLine("Prozess wurde mit Parametern gestartet.");
Console.Beep(1337, 420);
Console.ReadKey();
}
else
{
// Start this program with arguments
StartProcess(System.Reflection.Assembly.GetEntryAssembly().Location);
}
}
public static void StartProcess(string exePath)
{
using (Process p = new Process())
{
p.StartInfo.FileName = exePath;
p.StartInfo.Arguments = "yolo1337";
p.Start();
}
}
}
Dieses Programm wird sich selbst mit Argumenten starten und einen Beep-Ton ausgeben sowie ne Nachricht anzeigen, wenn es geklappt hat.
PS: Willst du einen Pfad bauen, ohne dich um das Backslash-Problem kümmern zu müssen:
Code:
Path.Combine("teil1", "teil2", "yolo.exe");
// => "teil1\\teil2\\yolo.exe" oder "teil1/teil2/yolo.exe" je nach OS, Pfad stimmt immer
PPS: using Statement: Gibt den Speicher am Ende des using-Blocks wieder frei, auch bei einem Error/Crash.
Wann immer möglich benutzen, wenn du IDisposable Objects hast.
Edit: Test vereinfacht