PDA

Ver la Versión Completa : Insertar componentes desde la API?


pai_delpher
31-03-2008, 12:22:17
Bueno en base al tema anterior que planteé, me surgió la duda, solo por curiosidad de saber a que nivel del sistema operativo trabaja la API.

Se pueden crear componentes en tiempo de ejecución sobre ventanas de Windows, es decir, insertar un botón, un combo, un edit, algo por el estilo.

¿Es esto posible desde la API?

Saludos.

Ñuño Martínez
31-03-2008, 12:55:41
Sí, pero no podrás utilizar las clases/objetos de Delphi. Están a un nivel inferior. Si quieres crear/añadir componentes en tiempo de ejecución sigue utilizando las clases/objetos de la VCL ya que es mucho más fácil. La única diferencia es que tendrás que colocar los valores de las propiedades "a mano".

pai_delpher
31-03-2008, 22:46:24
Yo me refiero a una ventana que no sea de mi aplicación, podrían darme un ejemplo?


Gracias.

Ñuño Martínez
01-04-2008, 10:06:41
Yo me refiero a una ventana que no sea de mi aplicación Entonces sí que no es posible.

cHackAll
01-04-2008, 19:07:43
Yo me refiero a una ventana que no sea de mi aplicación, podrían darme un ejemplo?

Si es posible... debes analizar la API SetParent, y la creación de los objetos en un formulario. Utiliza la busqueda pues hay un breve ejemplo utilizado en el Google earth.

Saludos

pai_delpher
02-04-2008, 00:28:47
Gracias cHackAll... me levantaste el ánimo.

Después les cuento cómo me fué.

Ñuño Martínez
02-04-2008, 10:08:33
Si es posible... debes analizar la API SetParent, y la creación de los objetos en un formulario. Utiliza la busqueda pues hay un breve ejemplo utilizado en el Google earth. Me he perdido algo. ¿Realmente se puede? :confused: Lo digo porque contradice todas las teorías sobre seguridad en sistemas operativos que conozco. :eek:

seoane
02-04-2008, 14:36:47
Me he perdido algo. ¿Realmente se puede? :confused: Lo digo porque contradice todas las teorías sobre seguridad en sistemas operativos que conozco. :eek:

Tampoco exageres hombre :D, insertar un botón no es mas que usar un par de APIs, pero el botón no hace nada mas que existir, no ejecutara ninguna acción al pulsarlo, para eso necesitaríamos inyectar código dentro de la otra aplicación, o por lo menos meter un hook en su bucle de mensajes. Yo no lo veo como un fallo de seguridad tan grande, una aplicacion no se mete en los "asuntos" de otra si no lo hace de froma consciente, asi que se supone que sabe lo que hace ;) . Aunque si por seguridad te referías a aplicaciones maliciosas, es sabido que si una aplicación se ejecuta con privilegios de administrador en windows puede hacer lo que le de la gana :D

pai_delpher
03-04-2008, 23:51:48
Bueno, acá les dejo la forma para inserta un componente en otra aplicación, lo cual solo tendría sentido si este pudiera realizar alguna acción, pero como no es así, quiza sirva para hace "publicidad" :S.

En fin, si alguien sabe como hacer para que este bontón funcione me avisa. Por lo pronto, voy a seguir investigando.


var
HAppHost, Boton: HWND;
begin
HAppHost := FindWindow(nil,'Delphi 7');
boton := Form1.Button1.Handle;
Windows.SetParent(boton, HAppHost);


¿Qué otra opción tendría para "acoplar" un botón que llame a mi aplicación desde otro?

Muchas gracias.

cHackAll
04-04-2008, 00:00:48
...si alguien sabe como hacer para que este bontón funcione me avisa...

...para eso necesitaríamos inyectar código dentro de la otra aplicación, o por lo menos meter un hook en su bucle de mensajes...

Ahora; estamos hablando del IDE de Delphi? para eso tienes que crear packages, no es necesario insertar objetos.

Saludos

pai_delpher
04-04-2008, 11:54:29
No, puse Delphi 7 por poner un ejemplo.

El tema es que quiero poner algo (llámese botón, pop-up menu, link, "componente") en otra aplicación para poder llamar a la mía sin tener que modificar el ejecutable (porque es ilegal), y no encuentro la manera, alguna vez a alguno se le planteó este problema.

Por ejemplo, no se si conocen el Messenger Plus, este tiene un botón que pone el mismo messenger para abrir su formulario de configuración o como los complementos para Word o Excel.

No sé si me explico.

Saludos.

cHackAll
04-04-2008, 16:01:06
...sin tener que modificar el ejecutable (porque es ilegal)...

...para eso necesitaríamos inyectar código dentro de la otra aplicación, o por lo menos meter un hook en su bucle de mensajes...

No se ha hablado en ningun momento de modificaciones del ejecutable (archivo), se ha hablado de modificaciones en memoria.

MSN Plus = Inyección
Word &Excel = Plugin (o complementos como tu mismo dijiste)

Saludos

pai_delpher
07-04-2008, 20:45:14
Como es eso de la inyeccion??...

Podrias darme un ejemplo, o explicarme de que se trata...


MUCHAS GRACIAS