Ejecutar aplicación solo cuando no este ya abierta...

Hola que tal tigreFox, perdón la molestia pero necesito nuevamente de tu apoyo, ahora es con respecto a algún código que pueda meter yo en mi programa MAIN de tal forma que busque el proceso "sistemaintegral.exe" dentro de los procesos que se están ejecutando en una plataforma windows xp, y en caso de que lo encuentre maximice la ventana o la pase a enfrente y en caso de que no encuentre el proceso como tal, entonces si, que mande a llamar a mi FORM inicial.
La idea es, no abrir varias veces la aplicación, si esta abierta pasarla a enfrente.
Yo encontré en algún lado un código para buscar las "ventanas" de mi aplicación y antes de mandarlas a llamar, pasarlas enfrente de estar ya abiertas, el código es este, pero no me jalo nunca:
lnHwnd = FindWindow(0, TITULOAPP_LOC)
IF lnHwnd > 0
*!* Si ya se habia arrancado antes la aplicación
BringWindowToTop(lnHwnd) && Mandar la ventana de la aplicación al frente
SendMessage(lnHwnd, WM_SYSCOMMAND, SC_MAXIMIZE ,0) && Maximizar la ventana de la aplicación
ELSE
*!* Si no se habia arrancado antes la aplicacion,
_SCREEN.Caption = TITULOAPP_LOC && Establecer título de la aplicacion
*!* Liberar variables locales
RELEASE lnCnt, lnHwnd, lcNewDir, laVFPBars
posiblemente el codigo este bien o solo le falte algo, pero como mis ventanas tienen diferentes nombres que los aqui declarados, nunca logre hacer que jalaran en mi programa, entonces alguien me dijo que en lugar de ventanas es mas facil buscar el proceso activo de mi programa antes de abrirlo nuevamente.
¿Serias tan amable de guiarme un poco acerca de como buscar procesos en winxp? ¿Alguna otra forma que se te ocurra que pueda hacer esto?
¿Habría la posibilidad de que me mandaras algún ejemplo de esto que tengas a mi correo? Mi correo es [email protected] . De antemano muchas gracias por cualquier orientación que me puedas dar. Saludos!.
Respuesta
1
Déjame ver si entendí, lo que necesitas es saber si la aplicación ya esta en ejecución si es así, ¿activarla en pantalla sino pues permitir que se ejecute?
EXACTO.. tu lo has dicho.. eso necesito hacer
**
Lo que pasa es que mi jece es medio anciano y es incompatible con la tecnología.. en pocas palabras "USUARIO NO HÁBIL" por lo que se necesita hacer exactamente lo que tu estas entendiendo.. por cualquier método conocido.. o que funcione haciendo eso mismo..
***
Ojala tengas alguna idea de como puedo hacer esto.. de ser así agradecería mucho lo que me puedas explicar... perdón por la tardanza pero no me dejaba responder. Gracias, saludos.
Nunca he necesitado de eso pero si se que lo trabajké un día opero no me acuerdo como, estoy buscando en mis viejas aplicaciones. Te vuelvo a escribir.
Ojala encuentres algo que pueda aplicar por aquí.. de todas maneras ya te estoy agradecido por el tiempo que has invertido..
.. y pues aquí esperare sin moverme...
no te enojes pero no encontré una respuesta mas científica que la que te voy a proponer, al ejecutar la aplicacion mira si existe un archivo que se puede llamar listo.ok, esto lo haces con el comando
if file("c:\listo.ok")
  quit
else
  FCREATE('c:\listo.ok')
Endif
si no existe el archivo listo.ok lo creas por el else
al salir de la aplciación parte importante del  proceso es eliminar el archivo
CLOSE ALL
CLEAR EVENTS
CLEAR PROGRAM
DELETE FILE "c:\listo.ok"
Explico, si la aplicación está en ejecución ya se ha creado el archivo y al iniciarse de nuevo la aplicación lo encuentra y simplemente se sale pero sino se ha ejecutado no lo encuentra y continua el proceso.
Éxitos
No olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas