PDA

Ver la Versión Completa : Meter una aplicacion dentro de otra


FrianxD
19-01-2010, 02:34:12
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 (http://www.terawiki.clubdelphi.com/), porque creo que es lo que necesitas.

bosster_018
20-01-2010, 03:17:17
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 (http://www.terawiki.clubdelphi.com/archivos/Delphi/Ejemplos/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
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 (http://www.terawiki.clubdelphi.com/)) 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
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
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).

/**/
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