Starcraft II birden fazla örnek çalıştırmamı yasaklıyor, ancak ikinci örneği Sandboxie'de korumalı olarak çalıştırırsam çalışır. Bunun sebebi ne olabilir?
Bu davranışı kendi oyunlarım için nasıl çoğaltabilirim?
Starcraft II birden fazla örnek çalıştırmamı yasaklıyor, ancak ikinci örneği Sandboxie'de korumalı olarak çalıştırırsam çalışır. Bunun sebebi ne olabilir?
Bu davranışı kendi oyunlarım için nasıl çoğaltabilirim?
Yanıtlar:
Starcraft 2'nin yanı sıra, bunun genel cevabı şudur: İşletim sisteminden belirli bir kaynağı edinme (ve edinmenin kendisi zaten kilitleme ile eşdeğer değilse kilitleme). Çekim / kilitleme başarısız olursa oyundan çıkın. Bu tür kaynaklara örnekler:
En üstte, müşteri yolu için en çok acı çeken, (bazen zorunlu olarak, bazı robotik kontrol bileşenleri için olduğu gibi) sadece tek bir iplik tarafından kullanılabilen özel donanımlar da bu şekilde kullanılabilir.
Muteks yaklaşımını tavsiye ederim, ancak:
Sık kullanılan başka bir yöntem, aynı ada sahip başka bir işlemin çalışıp çalışmadığını kontrol etmektir.
Avantajı gülünç derecede kolay olmasıdır - dosya izinleri hakkında endişelenmenize veya muteksin ne olduğunu bilmenize gerek yoktur. Dezavantajı, makinede çağrılan farklı bir program starcraft2.exe
çalışıyorsa yanlış pozitif alırsınız .
C ++ ve Windows API kullanıyorsanız FindWindow
, sınıf yolu ve / veya pencere adı gibi parametreleri aktarabileceğiniz yöntemlerden birini kullanmaktır . Bir eşleşme bulursanız, bir pencere yüklemeden veya bir pencere oluşturmadan önce programınızdan çıkmanız yeterlidir.