Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Insertar componentes desde la API? (https://www.clubdelphi.com/foros/showthread.php?t=54794)

pai_delpher 31-03-2008 12:22:17

Insertar componentes desde la API?
 
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

Cita:

Empezado por pai_delpher (Mensaje 276526)
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

Cita:

Empezado por pai_delpher (Mensaje 276526)
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

Cita:

Empezado por cHackAll (Mensaje 276741)
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

Cita:

Empezado por Ñuño Martínez (Mensaje 276950)
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.

Código Delphi [-]
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

Cita:

Empezado por pai_delpher (Mensaje 277470)
...si alguien sabe como hacer para que este bontón funcione me avisa...

Cita:

Empezado por seoane (Mensaje 276976)
...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

Cita:

Empezado por pai_delpher (Mensaje 277550)
...sin tener que modificar el ejecutable (porque es ilegal)...

Cita:

Empezado por seoane (Mensaje 276976)
...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


La franja horaria es GMT +2. Ahora son las 11:20: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