Home | Chi sono | Contattami
 

Progr. lineare

Delphi
 
Componenti
  Database
 
Miei articoli

Windows

Miei articoli 

 

Impedire che un programma venga eseguito più di una volta contemporanenamente


Per impedire che un programma venga eseguito più volte contemporaneamente, si può procedere in vari modi. Di seguito espongo una delle tecniche, non perchè sia la migliore ma forse perchè è la più semplice da comprendere

1. Implementazione

program Project1; uses Forms, Windows, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} var atom: integer; begin if GlobalFindAtom('Carlo_Pasolini_Atom') = 0 then atom := GlobalAddAtom('Carlo_Pasolini_Atom') else Exit; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; GlobalDeleteAtom(atom); end.

Come si vede dal codice è sufficiente l'aggiunta di alcune righe di codice al sorgente del progetto.

2. Alcune considerazioni sulle api usate

La funzione GlobalAddAtom aggiunge una stringa di caratteri alla "global atom table" e restituisce un valore unico (un "global atom") che identifica la stringa in questione. 

La funzione GlobalFindAtom cerca, all' interno della "global atom table", la stringa di
caratteri specificata e ottiene il "global atom" associato con quella stringa

Se ho già lanciato il programma in questione, allora la funzione GlobalFindAtom restituisce un valore diverso da 0 in quanto il "global atom" è già presente: in questo caso interrompo l' esecuzione del programma con un Exit

Invece, se la funzione GlobalFindAtom restituisce 0, allora questa è la prima volta che eseguo il programma, così vado a creare il "global atom" con la funzione GlobalAddAtom e continuo con l' esecuzione del programma.

Alla fine cancello il "global atom" con la funzione GlobalDeleteAtom



 

 
 
Your Ad Here