Process.Start не запускает игровое приложение?

Я новичок в C #, я уже с ним возился, но теперь я действительно хочу узнать его. Я хочу сделать внешнее консольное приложение для игры, игра - плохой порт, и для нее требуется, чтобы в фоновом режиме было открыто много программ, чтобы сделать ее более играбельной. Поэтому я решил сделать программу, которая заменяет launcher.exe на такую, которая запускает все программы при запуске игры и закрывает их при закрытии игры.

Если быть точным, игра называется 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, чтобы другие программы закрывались вместе с ним. Есть идеи?

Спасибо

Редактировать: я также хотел бы добавить, что другая игра, которую я пробовал, запустилась отлично.


person ShadyOrb09    schedule 28.07.2016    source источник
comment
Если бы вы сохранили результат процесса, вы могли бы проверить, жив ли он.   -  person BugFinder    schedule 28.07.2016
comment
Измените начало с помощью объекта ProcessStartInfo, где вы установили EnableRaisingEvents = true. Затем сохраните запущенный процесс в переменной и перехватите событие Exited. Оставьте свое приложение до тех пор. (msdn.microsoft. com/en-us/library/)   -  person Maximilian Gerhardt    schedule 28.07.2016
comment
Почему имя класса вашей программы — SecurityException : SystemException? Пожалуйста, измените его на Программа   -  person OrMiz    schedule 28.07.2016


Ответы (1)


Исправлено с помощью файла 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);
person ShadyOrb09    schedule 05.08.2016