FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Saber Cuando ha Terminado De Cargarse La Aplicación
Bueno, expondré mi duda o consulta :
Tengo un programa que puede abrir multiples ficheros marcados desde el ecplorer de win. Cuando el programa está cargado en memoria no hay problema, ya que no da ningún tipo de error. El problema surge cuando marco varios ficheros (estan asociados a mi aplicación en el Reg. de win) y no hay ninguna aplicación iniciada. Dicho de otro modo, me gustaría saber cuando a terminado mi aplicación de cargarse del todo (Ventanas - forms). Explico algo mas para dar mas entendimiento a la cuestión : Cuando inicio mi aplicación creo un señalizador para que no se recarge varias veces, creo un área de memoria compartida (4kbytes) para enviar el fichero. Mapeo esa memoria de manera ke el primero en abrir se convierte en receptor y el resto en emisor (se en Handle del receptor gracias a esa modalidad). Los emisores envian como parámetro (tengo en el receptor habilitado la captura de evento) un fichero a abrir y el receptor los abre. Pero como no está totalmente cargada la aplicación produce errores de indexación a datos de listas (TStrins - TSTringList)..... Kon lo ke se produce un error Bound..... Mi duda es solo cuando puedo saber ke tengo la aplicación activa totalmente cargada para evitar esos desbordamientos o direccionamiento a datos inexistentes (por no estar cargados).... Sencillo no? (pues jode ke te kagas ) He mirado el objeto APPLICATION y tiene una variable interna FRunning ke kreo es la ke me interesa pero me obligaría a cambiar los ficheros base de delphi (V.7) ... no se ke hacer si kargarme ese fichero remodelandola variable y creando una pública o no se ke..... Esa variable se avtiva cuando ejecuta RUN la aplicación y es cuando creo ke está activa...... Si alguien konoce una manera de solucionarlo de una forma mas elegante se lo agradecería Salu2 a tod@s y gracias de ante mano...
__________________
www.sintecsl.es |
#2
|
||||
|
||||
Pues parece que mi memoria falla porque hace (mucho) tiempo estuve en tu misma situación, y cuando desde el Explorer marcaba varios archivos y le decía que los abriera mi aplicación, lo que pasaba era que dicho Explorer arrancaba mi programa y le pasaba todos los archivos vía parámetros (funciones ParamCount y ParamStr), y nunca me tuve que preocupar de si abría o no una instancia por archivo. ¿Ha cambiado esto con los Windows más modernos? ¿O quizá es algo relacionado con la configuración? Mencionas el registro: ¿no habrá una opción relacionada con esto?
De todas formas seguro que el objeto Application puede usarse para esto, o no. |
#3
|
||||
|
||||
quebradero de cabesa.
facil, ya tienes un objeto q dices q es para evitar multiples instancias, y si no entiendo mal, los archivos q tiens q abrir vienen registrados en el registro de windows, puedes hacerlo de cargando un fichero a la ves, calculandolo de su tamaño y con una splash screen dinamica para q el usuario sepa q se esta cargando la aplicacion, le podrias pasar el nombre del archivo q se esta abriendo., y para saber si tu aplicacion ya cargo totalmente, al ejecutarse el parametro run, y se muestra la primera ventana q tengas asignada aosea la forma principal de la aplicacion, ya esta lista, jejejeje, , pero una manera decente si los vas a cargar desde la linea de parametros usa primero las splash screen para q el usuario sepa q esta trabajando, y si lo va a hacer con la aplicacion abierta crea un form de tiempo de espera, hago haci como cuando copeas un archivo en windows, ademas haci como lo menciona el compañero nuño, las funciones (ParamCount y ParamStr), sirven para pasarle multiples archivos a una aplicacion.
__________________
La mejor forma de aprender es, compartir el conocimiento adquirido. Última edición por thecidmx fecha: 14-12-2011 a las 14:49:00. |
#4
|
||||
|
||||
Antes de nada agradeceros las respuestas y vuestro interés. Os comento, que en el arranque de (Create) la form realizo la creación del semáforo y verifico si existe (Last Errror).
Como de momento no tenia solución simplemente silenciaba el problema capturando el error con try except (Cuestión de estética). Y si creo que la solución debe estar en la forma de parametrizar la línea de comandos al registrar la extenxión asociada a la aplicación. En este caso tengo este objeto que utilizo siempre que se crea la form :
El código de la misma es el siguiente (Unidad completa) :
Editaré el registro de alguna aplicación (como un editor de textos) y miraré como resuelve el tema paramétrico en Open. Seguro que ahí tendré la respuesta. Gracias a tod@s.
__________________
www.sintecsl.es |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Evento para saber cuando se fuerza el cierre de una aplicación | APO | OOP | 1 | 08-12-2011 14:20:56 |
Como saber mediante hook cuando se abre o cierra una aplicacion | JoAnCa | API de Windows | 2 | 15-11-2008 20:05:48 |
Internet Explorar: Saber si ha terminado de cargar WEB. | Jose_Pérez | Internet | 3 | 11-09-2007 14:18:44 |
Saber cuando ingresan a tu PC | genius | Varios | 4 | 11-12-2006 14:47:52 |
¿Cómo puedo saber desde mi aplicación cuándo se abre por primera vez? | nuri | Varios | 7 | 21-07-2005 14:07:51 |
|