Cómo detectar si nuestra aplicación está ejecutándose.

Unas de las muchas formas, de detectar si nuestra aplicación ya esta funcionando, y por lo tanto evitar dobles arranques, es utilizando un semáforo binario, llamado mutex, que se crea con la función CreateMutex. Para que Windows reconozca el semáforo hay que asignarle un nombre.

void __fastcall TForm1::FormCreate(TObject *Sender){if(CreateMutex(NULL, false, « Nombre del Semaforo ») !=0 &&
GetLastError() == ERROR_ALREADY_EXISTS)
ShowMessage(« Ya existe »);
Application->Terminate();else ShowMessage(« No existe »);}

 

Esta función la he colocado en el Evento del Formulario principal, pero lo lógico es que este en la función principal ( WinMain ).