Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 31-03-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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".
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 31-03-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
Yo me refiero a una ventana que no sea de mi aplicación, podrían darme un ejemplo?


Gracias.
Responder Con Cita
  #4  
Antiguo 01-04-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por pai_delpher Ver Mensaje
Yo me refiero a una ventana que no sea de mi aplicación
Entonces sí que no es posible.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 01-04-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por pai_delpher Ver Mensaje
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
Responder Con Cita
  #6  
Antiguo 02-04-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
Gracias cHackAll... me levantaste el ánimo.

Después les cuento cómo me fué.
Responder Con Cita
  #7  
Antiguo 02-04-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por cHackAll Ver Mensaje
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? Lo digo porque contradice todas las teorías sobre seguridad en sistemas operativos que conozco.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #8  
Antiguo 02-04-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Me he perdido algo. ¿Realmente se puede? Lo digo porque contradice todas las teorías sobre seguridad en sistemas operativos que conozco.
Tampoco exageres hombre , 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
Responder Con Cita
  #9  
Antiguo 03-04-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
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.
Responder Con Cita
  #10  
Antiguo 04-04-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por pai_delpher Ver Mensaje
...si alguien sabe como hacer para que este bontón funcione me avisa...
Cita:
Empezado por seoane Ver Mensaje
...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
Responder Con Cita
  #11  
Antiguo 04-04-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
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.
Responder Con Cita
  #12  
Antiguo 04-04-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por pai_delpher Ver Mensaje
...sin tener que modificar el ejecutable (porque es ilegal)...
Cita:
Empezado por seoane Ver Mensaje
...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
Responder Con Cita
  #13  
Antiguo 07-04-2008
pai_delpher pai_delpher is offline
Miembro
 
Registrado: mar 2008
Posts: 11
Poder: 0
pai_delpher Va por buen camino
Como es eso de la inyeccion??...

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


MUCHAS GRACIAS
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Insertar palabras desde un memo judit25 Conexión con bases de datos 7 01-03-2008 15:31:07
Insertar fecha desde NxDatePicker JcTaztoman Varios 0 26-09-2007 18:30:18
Insertar datos desde un DBGrid Maury Manosalva Conexión con bases de datos 0 09-01-2007 23:44:52
insertar desde un procedimiento almacenado Gabriel2 Firebird e Interbase 5 28-10-2005 17:48:29
Insertar en un DbgridEh columnas con distintos componentes mateamargo OOP 5 16-06-2005 21:35:03


La franja horaria es GMT +2. Ahora son las 19:46:17.


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
Copyright 1996-2007 Club Delphi