[Lazarus-es] TProcess Handle

Rubén Ibáñez ruben.mariano.ibanez en gmail.com
Sab Ago 3 05:54:41 CEST 2013


¿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<http://www.freepascal.org/docs-html/fcl/process/tprocess.html>,
> 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<Lazarus-es en lists.lazarus.freepascal.org>
>> http://lists.lazarus.**freepascal.org/mailman/**listinfo/lazarus-es<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
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130802/30b90dfc/attachment-0002.html>


More information about the Lazarus-es mailing list