Überprüfung auf mehrere Instanzen eines Spiels
Aus Spieleprogrammierer-Wiki
(Unterschied zwischen Versionen)
[unmarkierte Version] | [gesichtete Version] |
(→C++/Windows) |
(→C++/Windows) |
||
Zeile 9: | Zeile 9: | ||
== Implementierung == | == Implementierung == | ||
=== C++/Windows === | === C++/Windows === | ||
− | |||
− | |||
<sourcecode lang=cpp tab=4> | <sourcecode lang=cpp tab=4> | ||
bool IsOnlyInstance() | bool IsOnlyInstance() | ||
{ | { | ||
− | HANDLE | + | // Versuche einen Mutex mit dem Namen des Prozesses (.EXE-Dateiname) zu erzeugen. |
− | + | // Wenn ein solcher schon existiert, läuft die Anwendung bereits. | |
− | if( | + | HANDLE mutex = CreateMutex(0, TRUE, GetModuleHandle(0)); |
+ | if(mutex == ERROR_ALREADY_EXISTS) | ||
{ | { | ||
− | + | // Der Mutex existiert schon! | |
− | + | // Hier könnte man jetzt noch das Fenster (falls vorhanden) der bereits gestarteten Instanz | |
− | + | // in den Vordergrund bringen. | |
− | + | return false; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
} | } | ||
+ | |||
return true; | return true; | ||
} | } | ||
</sourcecode> | </sourcecode> | ||
− | |||
− |
Version vom 14. Dezember 2011, 14:08 Uhr
Klicke hier, um diese Version anzusehen.