SoloCodigo

Programación General => Power Builder => Mensaje iniciado por: patolinpcn en Martes 11 de Abril de 2006, 21:57

Título: Re: Solo Abrir Una Vez La Aplicacion
Publicado por: patolinpcn en Martes 11 de Abril de 2006, 21:57
Necesito saber por favor como controlar que una aplicación en power no pueda ser habierta más de una vez .gracias.
Título: Re: Solo Abrir Una Vez La Aplicacion
Publicado por: pierpiter en Miércoles 12 de Abril de 2006, 15:54
Mirá, encontre esto. Usa las api de windows, lo que hace es chequear si una aplicación esta ejecutandose, si es así, la detiene. Quizás esto se pueda adapatar a lo que vos querés, poniendo esto en el script inicial, si detecta que la aplicación esta ejecutandose que no la ejecute, sino, que arranque normalmente.

Código: Text
  1. Por Sameer N Phatak -- sameerp@meghdoot.mastek.com
  2. este truco chequea si una aplicación esta en ejecución, y si lo está la detiene.
  3. Primero se chequea si la aplicación está en ejecución usando la llmada API FindWindowA(). Entonces, si la ventana está en ejeución y el usuario quiere detenerla se usa la llamada API PostMessageA() que muestra la ventana de mensaje WM_QUIT para detener la aplicación.
  4. - Declaraciones de funciones externas:
  5. FUNCTION ULong FindWindowA(ULong classname, String windowname) LIBRARY "user32.dll"
  6. FUNCTION boolean PostMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong lParam) Library "User32.dll"
  7. - Power Script
  8. Ulong lul_handle, lul_class
  9. String ls_name
  10. // El valor hexadecimal de wm_quit es 0x0012. Convertido a valor decimal es 18.
  11. UInt lui_quit = 18
  12. // Pone la Clase a NULL. Esto no es obligatorio, puedes pasarle 0 también a la función FindWindowA().
  13. SetNull(lul_class)
  14. // Este es el código de la ventana. Por ejemplo la calculadora de Windows
  15. ls_name = "Calculator"
  16. // Usa la llamada API para obtener el puntero de la ventana si la aplicación está en ejecución.
  17. lul_handle = FindWindowA(lul_class, ls_name)
  18. IF lul_handle > 0 THEN // Si se encuentra el puntero de la ventana se muestra el mensaje wm_quit
  19. PostMessageA(lul_handle, lui_quit, 0, 0);
  20. return
  21. Else
  22. MessageBox("Aviso", "La aplicación no está en ejecución. !")
  23. END IF
  24.  

Espero te sirva, no lo probé.

:P
Título: Re: Solo Abrir Una Vez La Aplicacion
Publicado por: bob esponja en Miércoles 12 de Abril de 2006, 17:47
hace como hacen algunas aplicaciones en linux.
cuando ejecutas la aplicacion crea un archivo vacio que se llame por ejemplo miAplicacion.lock en la carpeta de la aplicacion o en temp.
cuando se abre la aplicacion se fija si ese archivo existe, si existe no se ejecuta.
cuando se cierra el programa que se esta ejecutando borra el archivo.
Título: Re: Solo Abrir Una Vez La Aplicacion
Publicado por: pierpiter en Miércoles 12 de Abril de 2006, 18:49
Cita de: "bob esponja"
hace como hacen algunas aplicaciones en linux.
cuando ejecutas la aplicacion crea un archivo vacio que se llame por ejemplo miAplicacion.lock en la carpeta de la aplicacion o en temp.
cuando se abre la aplicacion se fija si ese archivo existe, si existe no se ejecuta.
cuando se cierra el programa que se esta ejecutando borra el archivo.

No es mala idea, pero el problema se puede dar cuando tu aplicación se cierre mal (ya sea por un fallo o por un corte de luz). Al no cerrar normalmente, no se ejecutaría el script para borrar el archivo y te quedaría y ya no podrías ejecutar de nuevo la aplicación.

:P
Título: Re: Solo Abrir Una Vez La Aplicacion
Publicado por: leoandres en Miércoles 26 de Abril de 2006, 01:00
Cita de: "patolinpcn"
Necesito saber por favor como controlar que una aplicación en power no pueda ser habierta más de una vez .gracias.
En esta dirección hay muchos tips de PB. te dirijo a lo que estas buscando.
http://www.pbdr.com/pbtips/ap/onlyonce.htm (http://www.pbdr.com/pbtips/ap/onlyonce.htm)


Que lo disfrutes.

Leopoldo Taylhardat

Maracay, Venezuela.