FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
controlar si mi programa se ejecuta
Hola amigos, navegando por ahi encontre algo sobre como controlar si mi programa esta corriendo o no; pasteo:
-------------------------------------------------------------------- Para detectar si tu aplicación ya está corriendo puedes usar "átomos". Windows cuenta con una tabla global donde se pueden dejar cadenas de caracteres (Strings) a los que denomina átomos. En tu aplicación podrías consultar esta tabla buscando un string determinado. Si lo encuentras, entonces tu aplicación estará corriendo, y si no lo encuentras lo agregas. Al finalizar la aplicación debes eliminar este string de la tabla. Debes tener cuidado de que tu aplicación termine normalmente, ya que en caso contrario tu string quedará en la tabla y al ejecutar tu aplicación, esta no correrá nuevamente hasta que reinicies Windows. El código es el siguiente, no olvides poner en la cláusula uses, Windows para las funciones de los átomos, y Dialogs para ShowMessage : program TestInstancias; uses Windows, Dialogs, Forms, utMainInstancias in 'utMainInstancias.pas' {Form1}; {$R *.RES} Const StrAtomo = 'Mi Aplicación'; Var IdAtomo: Word; begin If GlobalFindAtom( StrAtomo ) = 0 //No lo encuentra? Then Begin //Agrega String y Obtiene id del atomo IdAtomo := GlobalAddAtom( PChar(StrAtomo) ); Application.Initialize; //Ejecuta aplicacion normalmente Application.CreateForm(TForm1, Form1); Application.Run; GlobalDeleteAtom(IdAtomo); //Elimina el Atomo End Else ShowMessage('¡La Aplicación ya está corriendo!'); end. ----------------------------------------------------------------- Bien, esto funciona perfectamente pero mi problema viene cuando el programa no termina normalmente, porque pete, porque estoy depurandolo y lo resetee o lo que sea. La cosa es que se queda pillado y siempre "entiende" que ya se está ejecutando. Alguien me podria dar una pista sobre como cepillarmelo de memoria, porque ni matando el proceso funciona. Gracias. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|