Como hago para que no se abra dos veces el programa ?

2,254 views
Skip to first unread message

fputignani

unread,
Aug 27, 2010, 4:46:43 PM8/27/10
to Comunidad de Visual Foxpro en Español
Bueno, el asunto lo resume bastante. Si intento abrir el programa más
de una vez se arma quilombo.
Como se hace para que no se pueda ejecutar un programa que ya se está
ejecutando?
Supongo que le debe ocurrir a todos eso. Si alguien recuerdo un tema
donde ya lo hayan hablado al tema, les agradecería que pasen el link o
me guíen como encontrarlo.


Desde ya muchas gracias por prestar atención.
Saludos

PD: me refiero a un programa ya todo entero que se abre desde un
ejecutable; y no a un programa interno.

Yvan GMAIL

unread,
Aug 27, 2010, 4:55:31 PM8/27/10
to publice...@googlegroups.com
Una simple..

IF IsActive("Titulo de mi aplicación") THEN
Messagebox("Aplicación ya fue cargada")
ENDIF

FUNCTION IsActive(tcCaption)
DECLARE INTEGER FindWindow IN WIN32API ;
STRING cNULL, ;
STRING cWinName
RETURN FindWindow(0, tcCaption) # 0
ENDFUNC
FUNCTION

Aunque creo que tendria incoveniente si el titulo cambio en tiempo de
ejecución.


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de fputignani
Enviado el: Viernes, 27 de Agosto de 2010 03:47 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Como hago para que no se abra dos veces el programa ?

pbugetti

unread,
Aug 27, 2010, 4:55:44 PM8/27/10
to Comunidad de Visual Foxpro en Español
Hola Amigo, Mira yo en mi aplicacion en mi PRG principal el de inicio
tengo colocado esto, seguramente te va a servir, a me sirve, si el exe
ya esta abierto lo que hace es maximizar la aplicacion y listo.
Cualquier duda me comentas.

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

**************************************************************************
* A PARTIR DE AQUI TU APLICACIÓN CONTINUA, CARGAS EL OBJETO
APLICACION, * *
* INICIAS EL BUCLE READ EVENTS, TU MENU, EL FORMULARIO DE LOGIN,
ETC *

**************************************************************************
Wait Windows "Cargando Menu Principal..." NoWait

Espero haberte ayudado, Suerte

Pablo - Argentina

Luis Maria Guayan

unread,
Aug 27, 2010, 4:58:47 PM8/27/10
to publice...@googlegroups.com
Te paso lo que yo utilizo en mi PRG principal

*-- Nombre de la Aplicación
_SCREEN.CAPTION = 'Administración de cuentas'
*-- Evito que se ejecute mas de una vez
IF YaEstaActivo()
  MESSAGEBOX('El sistema ya está activo.',16,'Aviso')
  loLogo = .NULL.
  RETURN
ENDIF


La función esta también en mi PRG principal

*------------------------------------------------------
* FUNCTION YaEstaActivo()
* - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Verifica si el programa ya está activo
* Retorna: .T. ó .F. si esta activo o no activo
*------------------------------------------------------
FUNCTION YaEstaActivo()
  LOCAL lcCaption, llRet


  DECLARE INTEGER FindWindow IN WIN32API ;
    STRING cNULL, STRING cWinName

  lcCaption = _SCREEN.CAPTION
  _SCREEN.CAPTION = '_' + lcCaption
  lnHWnd = FindWindow(0, lcCaption)
  IF lnHWnd # 0
*#beautify keyword_nochange
    DECLARE INTEGER SetForegroundWindow IN user32;
      INTEGER hWindow
    DECLARE INTEGER ShowWindow IN user32;
      INTEGER HWND, ;
      INTEGER nCmdShow
    SetForegroundWindow(lnHWnd)
    ShowWindow(lnHWnd, 9)
    llRet =  .T.
*#beautify
  ELSE
    llRet =  .F.
  ENDIF
  _SCREEN.CAPTION = lcCaption
  RETURN llRet
ENDFUNC

*------------------------------------------------------

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

edgar suarez kummers

unread,
Aug 27, 2010, 5:21:50 PM8/27/10
to publice...@googlegroups.com
Estimado fputignani:

Al salir de los FORM siempre dicta:

close tables all
close all
release windows

Las veces que quieras .... no va a pasar nada respecto a errores, pero siempre sales bien librado.

Saludos

Edgar


De: fputignani <fputi...@gmail.com>
Para: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Enviado: vie,27 agosto, 2010 15:46

Asunto: [vfp] Como hago para que no se abra dos veces el programa ?

fputignani

unread,
Sep 6, 2010, 11:39:16 AM9/6/10
to Comunidad de Visual Foxpro en Español
Disculpen gente, estuve ocupado últimamente y no pude dedicarme al
programa.
Les agradezco inmensamente las respuesta, me sirvieron mucho ya que no
sabia que existían esas funciones.
Creo que tengo un par de preguntas extras, pero lo pienso mejor y
luego pregunto.
Saludos a todos, y gracias.



Franco

ibania blanco

unread,
Sep 6, 2010, 7:27:23 PM9/6/10
to Comunidad de Visual Foxpro en Español
pbugetti dice que no encuentra FindWindow

Walter Comito

unread,
Aug 19, 2015, 4:10:54 PM8/19/15
to Comunidad de Visual Foxpro en Español
LUIS COMO HARIAS PARA SABER SI ESA APLICACION ESTA ABIERTA MAS DE 3 VECES POR EJ.
MI PROBLEMA ES QUE SOLO QUEIRO QUE ABRAN LA APLICACION HASTA 3 VECES Y NO MAS.

Desde ya muchas gracias por prestar atención.
Saludos

Walter Comito

Ricardo Pina

unread,
Aug 19, 2015, 4:17:44 PM8/19/15
to Grupo VFP
--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 

Rene Arturo Lopez Galindo

unread,
Jun 29, 2016, 12:29:28 PM6/29/16
to Comunidad de Visual Foxpro en Español
Hola a todos, yo no se nada de programacion, pero tengo este problema necesito que cuando abra el notepad, no me deje abrir otra  ventana del notepad.

me pasaron este scrib para un .bat pero no me funciono

alguien sabe como puedo lograr esto

@ECHO OFF
tasklist /FI "IMAGENAME eq programa.exe" | find "programa.exe" > NUL
IF "%ERRORLEVEL%"neq"0" (
)
programa
Reply all
Reply to author
Forward
0 new messages