![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola,
Prueba con algo así:
Por cierto, el procedimiento se basa en uno que puede encontrarse en la librería Delphi Works. |
|
#2
|
|||
|
|||
|
Muchas gracias por la respuesta Dec, lo acabo de probar pero esa solucion no me vale del todo.
El problema es q intenta volver a abrir el programa antes de cerrarlo lo cual no es valido, ya q puede darme bastantes problemas. La solucion q ando buscando es q se cierre lo primero el programa y despues mediante la ejecucion de algun fichero batch o algo asi q leve un delay de 1 o 2 segundos se vuelva a llamar al ejecutable del programa. Tienes idea de como podria hacer eso? Un saludo y gracias de nuevo. |
|
#3
|
||||
|
||||
|
Necesitas una pequeña aplicación (lanzadera) que:
(1) Compruebe que tu programa ya no seestá ejecutando (FindWindows por ejemplo) (2) Ejecute tu programa. Antes de cerrar la tuya ejecutas la aplicación lanzadera y luego cierras la tuya. Para mayor seguridad, yo lo que hago es añadirle un parámetro a la aplicación lanzadera y comprobarlo, de manera que sólo funciona correctamente si se le ha pasado ese parámetro (desde tu aplicación se lo pasas). De ésta foprma, si se llama por equivocación desde la línea de comandos (sin parámetro) no hace nada.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#4
|
|||
|
|||
|
Quiza urgando en el regedit....
Que tal????
Si lo que quieres es que se reinicie tu aplicacion junto con Win checate esta dir: http://www.q3.nu/trucomania/index.html Última edición por Phacko fecha: 10-08-2005 a las 17:14:00. Razón: Modificarlo |
|
#5
|
||||
|
||||
|
Cita:
Textualmente: Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#6
|
||||
|
||||
|
Hola,
Cita:
Tu aplicación guarda cierta información en archivos "Ini", pero no puede "aplicar" dicha configuración sino es cuando se inicia la aplicación: probablemente esto ya indica que algo podría hacerse de otro modo, pero, en todo caso, sigamos. Antes de llamar a la rutina para reiniciar la aplicación tú guardas la información que sea menester en el archivo "Ini", entonces, ¿qué problema puede haber? No me lo imagino, puesto que cuando tu programa se inicie contará con la información necesaria en el archivo "Ini". Por lo tanto algo está ocurriendo que tal vez no debería ocurrir o podría hacerse de tal forma que no diera esos problemas que dices que tienes: el problema, insisto, no está en el procedimiento que copié más arriba (porque de hecho se basa, como dije, en la librería Delphi Works y un procedimiento que se halla en esta). De todos modos no te tomes lo que te digo a mal. Quizás estoy completamente equivocado y no pienso en qué hay que realizar exactamente y la problemática del tema: no lo conozco, solamente sé qué dices y a eso digo yo que no deberías tener problemas, insisto, si antes de llamar de "reiniciar" el programa tú ya escribiste en el archivo "Ini" la información precisa. Tal vez se me escape algo (muy probablemente) pero no podía dejar de decir lo dicho Sin acritud, como suele decirse, solo por ver si puedo aportar algo y nada más. No hay otra intención. |
|
#7
|
||||
|
||||
|
Hola Foro! tiempo sin verlos, creo que si podrias iniciar la aplicacion clon de la actual antes de cerrarla, pues puedes comunicarlas con paso de mensajes a través del RegisterWindowMessage, solo tendrias q parar el arranque de la secundaria desde código hasta q la primera le comunique q ya ha terminado (en otras palabras: la primera espera el momento en que la segunda tenga conciencia para terminar), por ejemplo esta aplicación evita ser ejecutada si ya existe otra instancia de ella:
UINT gmShutDown; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { gmShutDown=RegisterWindowMessage("6FBFC81A-D32A-4B8D-BB60-0390470F82CF"); } //--------------------------------------------------------------------------- void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg,bool &Handled) { if(Msg.message == gmShutDown) //Recepción del mensaje de primera aplicación Application->Terminate(); } //--------------------------------------------------------------------------- void __fastcall TForm1::BitBtn1Click(TObject *Sender) { PostMessage(HWND_BROADCAST, gmShutDown, 0, 0); //Enviar el mensaje a las otras //aplicaciones } Ojala te sirva!!! |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|