PDA

Ver la Versión Completa : Iniciar programa


triskel
23-08-2005, 12:47:08
Buenas,

Tengo un programa que arranca al inicio de windows. PAra eso lo tengo en el Regedit.
Mi problema es que mi programa arranca antes de que Windows haya acabado de cargar todos los demas procesos y programas.
¿Hay alguna forma de detectar si Windows a acabado de arrancar?

Gracias

Triskel

roman
23-08-2005, 16:31:07
¿Hay alguna forma de detectar si Windows a acabado de arrancar?


Yo creo que esto es algo ambiguo. ¿Cuándo puede decirse que Windows ha terminado el arranque (hay veces que parece que durante toda la sesión sigue arrancando)?

Lo único que por el momento se me ocurre es detectar el mensaje TaskBarCreated que manda el sistema cuando ya se ha creado la barra de tareas con lo que de alguna manera puede decirse que el shell ya está listo para trabajar.

Pero sería interesante que nos dieras más detalles de qué es lo que hace tu aplicación para requerir que Windows ya esté completamente cargado.

// Saludos

Crandel
23-08-2005, 18:37:08
pone un acceso directo en el inicio del menu de programas.

Este se carga despues que registry.

triskel
24-08-2005, 08:15:04
Roman,

Gracias por la info, ahora lo probaré.

En realidad lo que tiene que arrancar es un programa Java compilado en un JAR.
El problema que tengo es que si en el Regedit arranco el JAR, no le da tiempo a levantar todos los paquetes Java necesario, por eso quiero hacer un programa Delphi que arranque en el inicio de la sesion y sea el que ejecute el programa Java, una vez este todo listo.

Saludos

triskel
24-08-2005, 08:58:26
Roman,

¿Como hago para interceptar el mensaje TaskBarCreated? Estoy un pelin perdido :confused:


Gracias

marceloalegre
24-08-2005, 14:32:49
Yo tenia exactamente ese problema triskel. Aqui tienes la genial solucion de controlar taskbarcreated by Roman:

http://www.clubdelphi.com/foros/showthread.php?t=22018

cualquier cosa, pregunta que yo ya he implementado esto por un inconveniente dado que un programa se "ejecutaba antes de tiempo" (para lo que yo necesitaba)

Saludos!

roman
24-08-2005, 19:49:00
Aunque posiblemente baste con la solución que propone Crandel. Imagino que las aplicaciones que se ejecutan desde el menú de inicio lo hacen una vez que ya está cargado el shell y por tanto después del TaskBarCreated.

// Saludos

triskel
25-08-2005, 08:50:48
Gracias por vuestra ayuda,

pero hoy ando algo pez, tengo un catarro del copon y no me doy centrado.
En el enlace que me da Kanvictor, roman dice que tengo que registrar el mensaje al iniciar mi aplicacion, es en el DPR??
En que unit esta el RegisterWindowsMessage??


Otra vez, gracias por todo!!


Triskel

dec
25-08-2005, 10:09:58
Hola,

En realidad es "RegisterWindowMessage" (sobra la "s" en Windows) y es por eso que no localizabas la unidad, la cual es "Windows.pas". Creo, en todo caso, que con el ejemplo que adjunto podrás comenzar a hacer pruebas.

dec
25-08-2005, 10:27:34
Hola,

Me quedan ciertas dudas sobre si registrar el mensaje en el evento "OnCreate", como hago en el ejemplo que adjunté arriba o si sería mejor hacerlo en la cláusula "initialization" de la unidad del formulario principal... Supongo que unas pruebas podrían darnos la mejor opción, si ya no es que alguien aclara dónde sería más conveniente registrar el mensaje que nos ocupa.

marceloalegre
25-08-2005, 15:01:31
Aunque posiblemente baste con la solución que propone Crandel. Imagino que las aplicaciones que se ejecutan desde el menú de inicio lo hacen una vez que ya está cargado el shell y por tanto después del TaskBarCreated.

// Saludos
Claaroo... es asi, en mi caso era muy distinto porque estaba ejecutando un servicio, que hacia "varias gracias" entre ellas ejecutar una aplicacion que era trayapp y si no la ejecutaba despues de explorer.exe funcionaba mal.

Saludos!.

marceloalegre
25-08-2005, 15:04:34
Hola,

Me quedan ciertas dudas sobre si registrar el mensaje en el evento "OnCreate", como hago en el ejemplo que adjunté arriba o si sería mejor hacerlo en la cláusula "initialization" de la unidad del formulario principal... Supongo que unas pruebas podrían darnos la mejor opción, si ya no es que alguien aclara dónde sería más conveniente registrar el mensaje que nos ocupa.
Realmente no se donde seria esto mas eficiente, yo he aplicado esto en 2 proyectos distintos, y siempre me maneje registrando en OnCreate...,, pero alguien con mayor base teorica probablemente pueda decirnos lo mas acertado... (lo esperamos :) )

saludos.

Crandel
25-08-2005, 20:46:58
el código que esta en la sección initialization es la primera que se ejecuta cuando se incia un programa.

En cambio en el create del formulario, es cuando se crea el formulario y por ende posterior a initialization.

pero igualmente no hay grandes diferencias de donde se registra.

triskel
29-08-2005, 08:48:19
Gracias a todos por la ayuda!!

Al final ya lo tengo y me funciona perfecto!!!


Triskel

dec
29-08-2005, 09:44:05
Hola,

triskel, no estaría demás que indicaras cómo al cabo solucionaste el problema, qué camino seguiste de los propuestos, si tomaste alguno alternativo, etc. Fundamentalmente, por si alguien se topa con el mismo inconveniente que tú y lee este Hilo tenga una idea de cómo tratar el tema hasta llegar a una solución "perfecta" como la que implementaste. Muchas gracias ;)