Programación General > Power Builder

 Re: Solo Abrir Una Vez La Aplicacion

(1/1)

patolinpcn:
Necesito saber por favor como controlar que una aplicación en power no pueda ser habierta más de una vez .gracias.

pierpiter:
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 ---Por Sameer N Phatak -- sameerp@meghdoot.mastek.comeste truco chequea si una aplicación esta en ejecución, y si lo está la detiene.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.- Declaraciones de funciones externas:FUNCTION ULong FindWindowA(ULong classname, String windowname) LIBRARY "user32.dll"FUNCTION boolean PostMessageA(ulong hwndle,UINT wmsg,ulong wParam,ulong lParam) Library "User32.dll"- Power ScriptUlong lul_handle, lul_classString ls_name// El valor hexadecimal de wm_quit es 0x0012. Convertido a valor decimal es 18.UInt lui_quit = 18// Pone la Clase a NULL. Esto no es obligatorio, puedes pasarle 0 también a la función FindWindowA().SetNull(lul_class)// Este es el código de la ventana. Por ejemplo la calculadora de Windowsls_name = "Calculator"// Usa la llamada API para obtener el puntero de la ventana si la aplicación está en ejecución.lul_handle = FindWindowA(lul_class, ls_name)IF lul_handle > 0 THEN // Si se encuentra el puntero de la ventana se muestra el mensaje wm_quitPostMessageA(lul_handle, lui_quit, 0, 0);returnElseMessageBox("Aviso", "La aplicación no está en ejecución. !")END IF 
Espero te sirva, no lo probé.

:P

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.

pierpiter:

--- 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.
--- Fin de la cita ---

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

leoandres:

--- 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.
--- Fin de la cita ---
En esta dirección hay muchos tips de PB. te dirijo a lo que estas buscando.
http://www.pbdr.com/pbtips/ap/onlyonce.htm


Que lo disfrutes.

Leopoldo Taylhardat

Maracay, Venezuela.

Navegación

[0] Índice de Mensajes

Ir a la versión completa