2016-07-28 126 views
0

我對C#很陌生,之前我已經搞混了,但現在我真的想知道它。 我想製作遊戲的外部控制檯應用程序,遊戲是一個糟糕的端口,它需要在後臺打開許多程序才能使其更具可玩性。所以我決定製作一個程序,將launcher.exe替換成遊戲開始時啓動所有程序並在遊戲關閉時關閉它們的程序。Process.Start未啓動遊戲應用程序?

這個遊戲是BioShock 2,但我很可能會製作這個程序,所以我可以在其他可以使用這個程序的遊戲中使用它。 這是我的問題,但是當我開始調試時,它會打開其中一個程序來幫助遊戲(FlawlessWidescreen),但遊戲本身不會打開。 我試過運行BioShock2,但它顯示它運行了一秒鐘,然後關閉,沒有錯誤,所以我無法準確弄清楚我做錯了什麼。

這是我的代碼。

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是一條捷徑,我只好給它更高的權限,所以我沒有運行該應用程序作爲管理員的所有時間。

我也想知道你們中的任何人是否知道如何檢查BioShock2是否關閉,以便其他程序將關閉它。有任何想法嗎?

感謝

編輯:我還想補充一點,另一場比賽我嘗試推出完美的罰款。

+0

如果保持處理結果,你可以檢查它是否還活着 – BugFinder

+0

與你設置'EnableRaisingEvents = TRUE'一個'ProcessStartInfo'對象修改開始。然後將啓動的進程保存在一個變量中並掛鉤'Exited'事件。直到那時保持你的應用程序活着(https://msdn.microsoft.com/en-us/library/system.diagnostics.process.exited(v=vs.110).aspx) –

+5

爲什麼你的程序類名是SecurityException:SystemException?請將其更改爲程序 – OrMiz

回答

0

通過使用WorkingDirectory修復它。

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);