Hogyan állapítható meg, hogy az alkalmazás már fut-e, vagy az első példánya - delphi sources faq

A programozó az ebédlőben ül, ebédel, ételt eszik. Olyan szemüveges, átgondolt, a program gondolkodik. Emberek, senki, mindenki már evett, elment. A pincérnő feljött hozzá és flörtöl:
- Ha jól akarsz lenni, a nevem Masha!
A programozó lassan tér vissza a földre és a pincérnő egy pillantással és az autopiloton kérdezi:
- És ha nem akarom, akkor mi a neved.

Egy másik módszer - a letöltött alkalmazások listája szerint

Ez a példa nem mindig alkalmazható - gyakran az alkalmazás címe változik minden indítással, ezért fontolja meg a megbízhatóbb módszert - FileMapping

Az a tény, hogy ideiglenes fájlokat hozhat létre a memóriában. Amikor újraindul, elveszik, és így léteznek. Egyébként ez a módszer használható az információcserére is az alkalmazások között. Példa a FileMapping használatával:

Gyakran a munkahelyen a felhasználó megnyithatja az 5-20 ablakot, és az üzenet, hogy a program már fut, arra vezet, hogy fél órát kell keresnie egy korábban elindított másolat számára. Kilépés a helyzetből - miután megtaláltuk a program egy példányát, aktiváljuk azt, amelyhez az utolsó példában a HALT előtt meg kell adnunk egy sort. SetForegroundWindow (Wnd);

Másik példány elindítása a Mutex használatával Véleményem szerint ez az egyik legegyszerűbb és legmegbízhatóbb módszer.

Ebben a példában, amikor az alkalmazás elindul, létrejön egy egyedi névvel rendelkező mutex (minden alkalmazásnak saját fiaszkával kell rendelkeznie). Ha legalább egy példányát az alkalmazás fut, akkor a rendszer egy mutexek az azonos nevű, és van ERROR_ALREADY_EXISTS hiba. Ellenkező esetben a mutex létrejön és létezik, amíg az alkalmazásnak ez a másolatát futtatja Kérdezzen kérdést