[Lazarus-es] TProcess Handle

Antonio Evora aevorar en gmail.com
Dom Ago 4 06:35:48 CEST 2013


Gracias Rubén,
El problema no es al lanzar la aplicación, si no de una vez lanzada en vez de mostrarse como ventana independiente apareciera en, por ejemplo, un tpanel dentro de un formulario.

Un cordial saludo.

El 03/08/2013, a las 05:54, Rubén Ibáñez <ruben.mariano.ibanez en gmail.com> escribió:

> ¿Por qué no usas el comando pascal exec? (http://www.freepascal.org/docs-html/rtl/dos/exec.html)
> Con él puedes lanzar cualquier aplicación desde tu programa, el que permanecerá abierto hasta que cierres el último.
> Un saludo.
> 
> 
> 
> El 2 de agosto de 2013 16:10, Antonio Evora <aevorar en gmail.com> escribió:
> Buenas,
> Lo que necesito es empotrar una aplicación externa dentro de un panel de mi aplicación. Lo que se pretende es que desde mi aplicación pueda lanzar distintas aplicaciones externas que se mostrarán dentro de la mía (a modo de panel de gestión). He conseguido realizarlo con éxito con el bloc de notas de Windows (la aplicación solo debe correr en Windows, no es necesario que lo haga en otros sistemas) y con la calculadora.  Esto lo consigo lanzando el proceso, espero un tiempo prudencial para dar tiempo a que muestre la ventana, la busco con findwindow y trabajo con ese handle (si queréis os paso el código de prueba). Lo que sí he notado que con aplicaciones más "complejas" (ventanas sin barra de título) el empotramiento falla, la semana que viene investigare un poco más y os contare avances. Cualquier información/aclaración/orientación será bienvenida.
> 
> Un saludete y bien fin de semana.
> 
> Enviado desde mi iPhone
> 
> El 02/08/2013, a las 01:27, Martin Gomez <mmgomez en gmail.com> escribió:
> 
>> Perdón Antonio, pero para que necesitas saber el Handle?
>> Le piensas enviar mensajes de Windows con SendMessage o algo por el estilo?
>> Si es sólo para esperar a que el proceso termine, puedes usar la propiedad Options, agregando poWaitOnExit, o mirando la propiedad Running.
>> 
>> De acuerdo a la documentación, las propiedades Handle y ProcessHandle te devuelven el Handle al programa, el Hwnd es el Handle a la ventana, no al programa, y no estoy seguro que eso funcione fuera de Windows.
>> 
>> Saludos,
>> Martín
>> 
>> 
>> 2013/8/1 José Mejuto <joshyfun en gmail.com>
>> El 01/08/2013 8:16, Antonio Évora escribió:
>> 
>> 
>> No puedes :( Un proceso puede lanzar múltiples "windows", por lo tanto
>> lo único que puedes hacer es, usando el ThreadHandle, enumerar todas
>> las ventanas de ese proceso, y de algún modo elegir la que quieres.
>> 
>> Gracias José.
>> Entiendo lo que me dices. Pero siempre debe haber un
>> formulario/ventana/window principal, ¿como puedo saber cual es el
>> principal?
>> 
>> 
>> Hola,
>> 
>> No, no hay, ese es un concepto de Delphi. En mi opinión lo máximo que puedes acercarte de modo genérico es lanzar el proceso, y entrar en un bucle esperando a que el proceso tenga alguna ventana abierta (EnumWindows) y usar la primera que aparezca. Lo malo es que si el programa tiene una ventana de presentación (splash), esa es la que te comerás :(
>> 
>> Por supuesto esto no es cross-platform, en Windows funciona pero lo dudo en otros SO.
>> 
>> EnumWindows devuelve los handles de las ventanas por Z-Order, o sea, primero la que se muestra por encima de las otras (dentro de ese proceso).
>> 
>> -- 
>> 
>> 
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus.freepascal.org
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> 
>> 
>> 
>> -- 
>> Try not to become a man of success but rather to become a man of value. Albert Einstein
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus.freepascal.org
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> 
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> 
> 
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130804/a1431797/attachment-0002.html>


More information about the Lazarus-es mailing list