Starcraft IIは複数のインスタンスの実行を制限していますが、Sandboxieでサンドボックス化された2番目のインスタンスを実行すると動作します。これを説明するものは何ですか?
自分のゲームでこの動作をどのように再現できますか?
Starcraft IIは複数のインスタンスの実行を制限していますが、Sandboxieでサンドボックス化された2番目のインスタンスを実行すると動作します。これを説明するものは何ですか?
自分のゲームでこの動作をどのように再現できますか?
回答:
Starcraft 2とは別に、これに対する一般的な答えは、オペレーティングシステムから特定のリソースを取得(および取得自体がまだロックと同等でない場合はロック)することです。取得/ロックに失敗した場合、ゲームを終了します。そのようなリソースの例は次のとおりです。
顧客のやり方で一番苦労しているのは、(場合によっては、一部のロボット制御コンポーネントのように)単一のスレッドでのみ使用できる特殊なハードウェアも、この方法で使用できることです。
mutexアプローチをお勧めしますが、次の点に注意してください。
よく使用される別の方法は、同じ名前の別のプロセスが実行されているかどうかを単純に確認することです。
利点はとてつもなく簡単だということです。ファイルのアクセス権を心配したり、ミューテックスとは何かを知る必要はありません。欠点は、呼び出された別のプログラムstarcraft2.exe
がマシン上で実行されている場合、偽陽性になることです。
C ++とWindows APIを使用している場合FindWindow
、できる方法の1つは、クラス名やウィンドウ名などのパラメーターを渡すことができるを使用することです。一致するものが見つかった場合は、ウィンドウをロードまたは作成する前にプログラムを終了するだけです。