Starcraft II забороняє мені запускати кілька примірників, але якщо я запускаю інший екземпляр з пісочницею в Sandboxie , він працює. Що може пояснити це?
Як я можу повторити цю поведінку для власних ігор?
Starcraft II забороняє мені запускати кілька примірників, але якщо я запускаю інший екземпляр з пісочницею в Sandboxie , він працює. Що може пояснити це?
Як я можу повторити цю поведінку для власних ігор?
Відповіді:
Окрім Starcraft 2, загальна відповідь на це: Набути (і заблокувати, якщо саме придбання вже не еквівалентно блокуванню) певного ресурсу з операційної системи. Вийдіть із гри, якщо придбання / блокування не вдалося. Прикладом таких ресурсів є:
У самому верхньому кінці, таким способом може бути також використана спеціальна апаратура, яка (іноді обов'язково, як для деяких робототехнічних компонентів управління) може використовуватися лише однією ниткою.
Я рекомендую підхід mutex, але:
Інший метод, який часто використовується, - це просто перевірити, чи запущений інший процес з такою ж назвою.
Перевага полягає в тому, що це смішно просто - вам не потрібно турбуватися про дозволи файлів або знати, що таке мютекс. Мінус полягає в тому, що ви отримаєте помилково позитивний результат, якщо на машині працює інша програма, що називається starcraft2.exe
.
Якщо ви використовуєте C ++ та API Windows, один із способів - це використання FindWindow
, де ви можете передавати такі параметри, як ім’я класу та / або ім'я вікна. Тоді якщо ви знайдете відповідність, просто вийдіть із програми, перш ніж ви навіть завантажите або створите вікно.