Starcraft II hạn chế tôi chạy nhiều phiên bản, nhưng nếu tôi chạy phiên bản thứ hai được sandbox trong Sandboxie , nó hoạt động. Điều gì có thể giải thích cho điều này?
Làm thế nào tôi có thể sao chép hành vi này cho các trò chơi của riêng tôi?
Starcraft II hạn chế tôi chạy nhiều phiên bản, nhưng nếu tôi chạy phiên bản thứ hai được sandbox trong Sandboxie , nó hoạt động. Điều gì có thể giải thích cho điều này?
Làm thế nào tôi có thể sao chép hành vi này cho các trò chơi của riêng tôi?
Câu trả lời:
Ngoài Starcraft 2, câu trả lời chung cho vấn đề này là: Mua lại (và khóa, nếu bản thân việc mua lại chưa tương đương với khóa) một tài nguyên cụ thể từ hệ điều hành. Thoát khỏi trò chơi nếu việc mua / khóa thất bại. Ví dụ về các tài nguyên đó là:
Trên đỉnh cao, hầu hết các ứng dụng dành cho khách hàng, phần cứng chuyên dụng (đôi khi nhất thiết, như đối với một số thành phần điều khiển robot) chỉ có thể được sử dụng riêng cho một chủ đề theo cách này.
Tôi khuyên bạn nên sử dụng phương pháp mutex, nhưng:
Một phương pháp khác thường được sử dụng chỉ đơn giản là kiểm tra xem một quy trình khác có cùng tên đang chạy hay không.
Ưu điểm là nó cực kỳ dễ dàng - bạn không phải lo lắng về quyền truy cập tệp hoặc biết mutex là gì. Nhược điểm là, bạn sẽ có kết quả dương tính giả nếu một chương trình khác được gọi starcraft2.exe
đang chạy trên máy.
Nếu bạn đang sử dụng C ++ và API Windows, một cách bạn có thể làm là sử dụng FindWindow
, nơi bạn có thể truyền các tham số như tên lớp và / hoặc tên cửa sổ. Sau đó, nếu bạn tìm thấy một trận đấu, chỉ cần thoát khỏi chương trình của bạn trước khi bạn tải hoặc tạo một cửa sổ.