José Ramón,
> No es eso lo que me ocurre lo que ocurre es que la mover el formulario del
> proceso hijo por la pantalla del proceso padre deja una estela que en el
> dibujo que te muestro es la mancha blanca que se ve. ¿Me has entendido?,
Creo que sí te he entendido, y es precísamente eso lo que ocurre.
> ** Ejecutar el programa externo del Reloj Benzing
> Execute( cRuta + "Palomartorio.exe",, .T.)
En la llamada a Execute, el tercer parámetro lo pones a .T., lo que
significa que el programa se queda completamente congelado hasta que termina
el proceso hijo. Al quedarse congelado ni siquiera llega a pintarse cuando
hace falta, e incluso windows xp te dará mensajes de "el programa no
responde".
Ponerlo a .T. es útil cuando ejecutas un programa pequeño que tarde poco
tiempo y vuelve enseguida, y que además necesitas sincronizarlo, es decir,
que tú no continúas ejecutando código hasta que ese programa haya terminado,
bien porque necesites algún resultado de él o por alguna otra razón.
Pero en el resto de los casos, no conviene dejar el programa congelado. Si
realmente necesitas saber cuando se cierra el proceso hijo tendrás que
controlar tú la ejecución. P.ej:
hProcess := Execute( cRuta + "Palomartorio.exe",, .T.)
WHILE IsRunnig( hProcess )
ProcessMessages()
ENDDO
Con este ejemplo, el programa puede repintarse y responder a los mensajes de
windows. Pero también tiene el inconveniente de que el usuario puede
interactuar con él. Si no quieres que el usuario pueda hacer nada en tu
programa podrías, p.ej., desactivar los formularios que estuvieran activos
en ese momento (:lEnabled := .F.) y volver a activarlos al final.
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info