Cum să determinați dacă aplicația este deja executată sau este prima ei copie - delphi sources faq

Programatorul se află în sala de mese, mănâncă masa de prânz, mănâncă supă. În astfel de ochelari, gânditor, programul gândește. Oamenii nimeni, toată lumea a mâncat deja, a plecat. Chelnerița vine la el și flirtează:






- Dacă vrei să ai un moment bun, numele meu este Masha!
Programatorul se întoarce încet la pământ și se uită la chelneriță cu o privire detașată și pe pilotul automat întreabă:
- Și dacă nu vreau, atunci care este numele tău.

Un alt mod - în funcție de lista de aplicații descărcate

Acest exemplu nu este întotdeauna aplicabil - adesea titlul aplicației se modifică cu fiecare pornire, deci luați în considerare o metodă mai fiabilă - prin FileMapping

Faptul este că puteți crea fișiere temporare în memorie. Când reporniți, acestea sunt pierdute și astfel există. Apropo, această metodă poate fi, de asemenea, utilizată pentru a face schimb de informații între aplicațiile dvs. Exemplu utilizând FileMapping:







Deseori la lucru, utilizatorul poate deschide ferestrele cu 5-20 de ferestre, iar mesajul pe care programul îl rulează deja duce la faptul că trebuie să caute o jumătate de oră pentru o copie începută. Ieșiți din situație - după găsirea unei copii a programului, activați-o, pentru care în ultimul exemplu înainte de HALT trebuie să adăugați o linie. SetForeFruncareWindow (Wnd);

Blocarea lansării unui al doilea exemplar utilizând Mutex În opinia mea, aceasta este una dintre metodele cele mai simple și mai sigure.

În acest exemplu, când începe aplicația, se creează un mutex cu un nume unic (fiecare aplicație trebuie să aibă propriul fiasco). Dacă se execută cel puțin o copie a aplicației, sistemul va avea deja un mutex cu acest nume și va apărea o eroare ERROR_ALREADY_EXISTS. În caz contrar, mutexul este creat și există în timp ce această copie a aplicației este executată. Întrebați întrebarea







Trimiteți-le prietenilor: