2016-07-28 19 views
0

Ich bin ziemlich neu in C#, ich habe es schon mal durcheinander gebracht, aber ich möchte es jetzt wirklich kennenlernen. Ich möchte eine externe Konsolenanwendung für ein Spiel machen, das Spiel ist ein schlechter Port und es erfordert eine Menge von Programmen, um im Hintergrund offen zu sein, um es spielbarer zu machen. Also habe ich beschlossen, ein Programm zu erstellen, das die Launcher.exe durch eine ersetzt, die alle Programme startet, wenn das Spiel beginnt und sie schließt, wenn das Spiel beendet wird.Process.Start Spielanwendung nicht gestartet?

Das Spiel ist BioShock 2, um genau zu sein, aber ich werde wahrscheinlich dieses Programm machen, damit ich es mit anderen Spielen verwenden kann, die dieses Programm auch verwenden könnten. Hier ist mein Problem, wenn ich das Debug starten, öffnet es eines der Programme, um das Spiel zu helfen (FlawlessWidescreen), aber das Spiel selbst wird nicht geöffnet. Ich habe versucht, nur BioShock2 laufen, aber es zeigt es für eine schnelle Sekunde ausgeführt und dann schließt, keine Fehler, so dass ich nicht genau herausfinden kann, was ich falsch mache.

Hier ist mein Code.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Diagnostics; 
using System.Security; 

namespace Bioshock2_Advanced_Launcher 
{ 
     public class SecurityException : SystemException 
    { 
     static void Main(string[] args) 
     { 
      Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\FlawlessWidescreen.lnk"); 
      Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\Bioshock2.exe"); 
     } 
    } 
} 

FlawlessWidescreen eine Abkürzung ist, hatte ich es erhöhten Berechtigungen zu geben, so dass ich nicht die Anwendung als Admin die ganze Zeit laufen musste.

Ich würde auch gerne wissen, wenn jemand von Ihnen wissen könnte, wie BioShock2 schließt, damit die anderen Programme damit schließt. Irgendwelche Ideen?

Dank

Edit: Ich möchte auch hinzufügen, dass ein anderes Spiel, das ich völlig in Ordnung ins Leben gerufen versucht.

+0

Wenn Sie den Prozess gehalten führen Sie überprüfen können, wenn sie noch am Leben – BugFinder

+0

den Start mit einem 'ProcessStartInfo' Objekt ändern war, wo Sie' EnableRaisingEvents = true' gesetzt. Speichern Sie dann den gestarteten Prozess in einer Variablen und haken Sie das Ereignis 'Exited' ab. Halten Sie Ihre Anwendung bis dahin am Leben. (https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited(v=vs.110).aspx) –

+5

Warum ist Ihr Programmklassenname SecurityException: SystemException? Bitte ändern Sie es in Programm – OrMiz

Antwort

0

Dies wurde mit dem WorkingDirectory behoben.

ProcessStartInfo bioshock2Info = new ProcessStartInfo(); 
bioshock2Info.FileName = (@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe"); 
bioshock2Info.WorkingDirectory = Path.GetDirectoryName(@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe"); 
Process bioshock2 = Process.Start(bioshock2Info);