Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Meter una aplicacion dentro de otra (https://www.clubdelphi.com/foros/showthread.php?t=65871)

FrianxD 19-01-2010 02:34:12

Meter una aplicacion dentro de otra
 
Hola, bueno la duda que tengo es si se puede hacer lo siguiente:

Tengo un Form con un Edit y un Botón, necesito hacer que cuando escribo el nombre del proceso de alguna de las aplicaciones que estan corriendo esa aplicacion se meta dentro de la mia, Ejemplo:

si escribo iexplorer.exe la ventana de iexplorer esa que esta abierta, se meta dentro de mi aplicacion, se puede hacer algo asi?

Neftali [Germán.Estévez] 19-01-2010 10:09:07

Ya hemos hablado alguna vez en los foros del tema.
Haz una búsqueda a ver si encuentras los hilos al respecto.

La idea es, encontrar la ventana/aplicación a la que te estás refiriendo con el texto del Edit (API FindWindow, por ejemplo) y luego cambiar el Parent para asignarle el de tu formulario (SetParent).

Tal vez me he pasado de "reducido".
Busca a ver si encuentras algo y ya dirás.

Échale un vistazo al ejemplo "Ejemplo26_notepad_window.zip" del FTP del Club, porque creo que es lo que necesitas.

bosster_018 20-01-2010 03:17:17

Creo que se me adelantaron
 
Esa respuesta era justo la que yo iba a dar... :cool: Pero me ganaron...

Para ayudar un poquito más, les dejo la dirección de descarga completa:

Ejemplo26_notepad_window.zip

Saludos!

FrianxD 20-01-2010 07:03:35

Muchas gracias a los 2, voy a mirar ese ejemplito :)

FrianxD 20-01-2010 07:33:40

Baje el ejemplo ese y lo que hace es abrir directamente otro programa dentro del mio, pero lo que yo intentaba hacer era que meta adentro el proceso que yo escriba mientras ya esta ejecutado, no se si me explico bien.:(

Neftali [Germán.Estévez] 20-01-2010 09:14:00

Cita:

Empezado por FrianxD (Mensaje 351210)
Baje el ejemplo ese y lo que hace es abrir directamente otro programa dentro del mio, pero lo que yo intentaba hacer era que meta adentro el proceso que yo escriba mientras ya esta ejecutado, no se si me explico bien.:(


Sí te explicaste bien, y aunque el ejemplo no sea "EXACTAMENTE" lo que necesitas, tiene casi todo lo que pides.
No se si has mirado con detalle el código; Si te fijas verás que, lo que hace no es "abrir el programa dentro del tuyo" (como tú dices), sino abrirlo y luego "meterlo dentro del tuyo". Así que el segundo paso es el mismo que tú necesitas.

Sólo te queda, en lugar de abrirlo, buscar uno ya abierto.

Para eso puedes revisar los ejempos (también del FTP) llamados: Ej_Explorar_una_ventana (hay tres), que interactuan on los procesos abiertos. Una vez que tengas localizado el proceso , utiliza el 2º paso del ejemplo anterior.

Un saludo.

FrianxD 20-01-2010 17:46:02

No lo he mirado con detalle por que estan en delphi y yo uso C++ :p ahora voy a ver esos otros ejemplos q me decis, y ver q puedo hacer, muchas gracias por la ayuda! :D




Saludos!

delphi.com.ar 20-01-2010 18:34:55

1 Archivos Adjunto(s)
Yo también tenía un ejemplito similar en mi página que no existe mas :S, seguramente existe en algún hilo del foro, ya que todo lo que tenía ahí era destinado al foro. Lo adjunto porque mi ejemplo es sutilmente distinto al Ejemplo26.

Saludos!

Neftali [Germán.Estévez] 20-01-2010 18:56:01

Cita:

Empezado por delphi.com.ar (Mensaje 351282)
Yo también tenía un ejemplito similar en mi página que no existe mas :S

Lo estuve buscando Federico, porque recordaba que en alguna ocasión lo habías posteado, pero no lo encontré...:(

Si tienes un hueco súbelo al FTP.

FrianxD 20-01-2010 19:31:28

No puedo lograr lo que intento, habra dando vueltas por ahi algun ejemplo en C++ ??

_cero_ 20-01-2010 22:54:58

Con el siguiente código en el Onclick de un botón se hace lo que quieres, ten en cuenta que tendrás que poner el titulo completo de la ventana (aunque hay formas más complicadas pero efectivas de buscar el handle de una ventana).
Código:

/**/
    HWND hann=FindWindowA(0, Edit1->Text.t_str());

    if (hann!=NULL) {
        ::SetParent(hann, Handle);
    }
    else {
        ShowMessage("No hay ventana con ese titulo");
    }


FrianxD 22-01-2010 18:53:33

Muchisimas gracias a todos :D


La franja horaria es GMT +2. Ahora son las 13:26:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi