Ответы:
Помимо Starcraft 2, общий ответ на этот вопрос таков: получить (и заблокировать, если само приобретение уже не эквивалентно блокировке) определенный ресурс из операционной системы. Выйдите из игры, если захват / блокировка не удалась. Пример таких ресурсов:
На верхнем уровне, наиболее болезненном для потребителя, специализированное аппаратное обеспечение, которое (иногда обязательно, как для некоторых компонентов роботизированного управления) может использоваться только одним потоком, также может использоваться таким образом.
Я рекомендую мьютексный подход, но:
Другой часто используемый метод - просто проверка, запущен ли другой процесс с тем же именем.
Преимущество в том, что это смехотворно просто - вам не нужно беспокоиться о правах доступа к файлам или знать, что такое мьютекс. Недостатком является то, что вы получите ложноположительный результат, если на компьютере запущена другая программа с именем starcraft2.exe
.
Если вы используете C ++ и Windows API, вы можете использовать один из способов FindWindow
, где вы можете передавать параметры, такие как имя класса и / или имя окна. Затем, если вы найдете совпадение, просто выйдите из вашей программы, прежде чем вы даже загрузите или создадите окно.