Forum

Пожалуйста or Регистрация для создания сообщений и тем.

Запуск игры из стима

Всем привет, нужна помощь. У меня старенький монитор 16:10, в стиме есть игра Fall Guys, и она не поддерживает такое разрешение, но я нашел программу, которая позволяет растянуть окно. Вот теперь хочу написать лаунчер, который сначала запускает игру, а потом программу(только в таком порядке работает), но не знаю как грамотно сделать, чтобы лаунчер дождался полного запуска игры.

Добрый день.
Что имеется ввиду "полного запуска"? Когда появится такой процесс или когда игра полностью загрузится?
Если пока загрузится, то можно банальным Thread.Sleep(<время в миллисекундах>) "подождать" какое-то время (примерно прикинуть через сколько секунд после запуска игры нужно запустить программу) и потом запустить программу.

привет. а пробовали пофиксить по этому мануалу

Цитата: nofate от 20.09.2020, 16:12

привет. а пробовали пофиксить по этому мануалу

Привет, им и пользовался, но недавно завезли античит, который с модифицированным файлом не пускает.

Цитата: Adler от 20.09.2020, 16:12

Добрый день.
Что имеется ввиду "полного запуска"? Когда появится такой процесс или когда игра полностью загрузится?
Если пока загрузится, то можно банальным Thread.Sleep(<время в миллисекундах>) "подождать" какое-то время (примерно прикинуть через сколько секунд после запуска игры нужно запустить программу) и потом запустить программу.

Спасибо, а есть ли разница между Thread.Sleep и await Task.Delay?
Получилось как-то так:

Спойлер

public Form1()
{
InitializeComponent();
Cmd("start \"\" \"D:\\Games\\Steam\\steam.exe\" steam://rungameid/1097150");
Check1:
if (Process.GetProcessesByName("COM Surrogate").Length == 0 && Process.GetProcessesByName("EasyAntiCheat Launcher").Length == 0 && Process.GetProcessesByName("FallGuys_client").Length > 0 && Process.GetProcessesByName("UnityCrashHandler64").Length > 0)
{
Thread.Sleep(6000);
Cmd("start \"\" \"D:\\soft\\Borderless Gaming\\BorderlessGaming.exe\"");
Close();
}
else
{
Thread.Sleep(2000);
goto Check1;
}
}

void Cmd (string line)
{
Process.Start(new ProcessStartInfo { FileName = "cmd", Arguments = $"/c {line}", WindowStyle = ProcessWindowStyle.Hidden });
}