Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2008
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Capturas a código delphi

Me han dicho que es posible capturar la pantalla de un programa y convertirla a un archivo DFM con la apariencia de la pantalla, sabeis si esto realmente existe y sis es así que programa es.

Persoanlmente lo dudo, pero me lo han dicho un par de universistarios, que han venido a venderme un programa, no es por nada, pero como que no van a poder

Gracias como siempre por vuestros comentarios
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #2  
Antiguo 02-04-2008
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Poder: 18
Black_Ocean Va por buen camino
Interesante... También me gustaría saber.

Espero que algún colega de ClubDelphi pueda averiguar si es esto cierto y contarnos a todos

Saludos y la verdad, estoy muy impaciente por saber
Responder Con Cita
  #3  
Antiguo 02-04-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por José Luis Garcí Ver Mensaje
Me han dicho que es posible capturar la pantalla de un programa y convertirla a un archivo DFM con la apariencia de la pantalla, sabeis si esto realmente existe y sis es así que programa es.
No acabo de entenderte muy bien,... Si te refieres a que a partir de una imagen se pueda generar un formulario con los controles correspondientes, me parece un poco raro...

Lo que sí se puede hacer (pero no creo que sea eso lo que quieren venderte) es coger un ejecutable hecho en Delphi. Decompilarlo y extraer de ahí los formularios y los recursos (pero no el código). Si en esa aplicación haz utilizado componentes estandard de Delphi, obtendrás el DFM y el PAs de los formularios, pero con los eventos y procedimientos vacíos...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 02-04-2008
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Poder: 18
Black_Ocean Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Si te refieres a que a partir de una imagen se pueda generar un formulario con los controles correspondientes, me parece un poco raro...
Yo por lo que entendí de la pregunta, se refiere a que un programa externo puede capturar un formulario en tiempo de ejecución y a partir de esa acción irá recorriendo el formulario, las clases y componentes, determinando las propiedades de cada uno, etc para ir formando el archivo .DFM

¿O es otra cosa lo que quiso decir?

Comenten

Última edición por Black_Ocean fecha: 02-04-2008 a las 10:22:05.
Responder Con Cita
  #5  
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
Así, en frío y sin pensar mucho, lo dudo. Ya es harto difícil que una computadora "entienda" un texto escrito como para enseñarle a distinguir un botón de un campo de entrada de texto con texto por defecto...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 02-04-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por José Luis Garcí Ver Mensaje
Me han dicho que es posible capturar la pantalla de un programa y convertirla a un archivo DFM con la apariencia de la pantalla, sabeis si esto realmente existe y sis es así que programa es.
Bueno, dándole vueltas al tema, se me ocurre otra forma de hacerlo siempre que no hablemos de "captura gráfica" de una pantalla.
Me explico.
Estando con nuestro escritorio y una serie de apolicaciones funcionando podemos calcular el handle de cualquier ventana, entre ellas la activa utilizando la API GetForegroundWindow o GetActiveWindow.

A partir del handle de esa ventana podemos obtener todas las ventanas hijas y muchas características de estas otras ventanas (Texto, posición, Flags,...) utilizando EnumChildWindows. Utilizando la API GetClassName, podemos a partir del handle de una ventana obtener su Clase.

Si ponemos esto en práctica, a partir de una ventana que tengamos en el escritorio podemos obtener una cosa como esta.

Como se ve es posible obtener las clases de los controles que forman el Form. Suponiendo que tenemos la clase de los controles, el parent, el texto, la posición y el tamaño, se supone que podríamos en ejecución "replicar" en cierta forma esa ventana, siempre que los controles pertenezcan a los estandard de Delphi.

No se si me he acabado de explicar...

Os paso el ejemplillo...
Si os animáis intentamos desarrollarlo un poco a ver dónde llegamos.
Archivos Adjuntos
Tipo de Archivo: zip Explorar una ventana.zip (3,2 KB, 17 visitas)
Tipo de Archivo: zip Explorar una ventana2.zip (3,7 KB, 18 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 02-04-2008 a las 14:30:19.
Responder Con Cita
  #7  
Antiguo 02-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola,
Creo que es lo que menciona Neftali, recuerdo que un programita que bajó mi hermano de la web ofrecía entre tantas utilidades una que mostraba información de la ventana: clase, ancho, largo, y demás...

Ahora no tengo a ese programita (freeware), pero recuerdo su Nombre: joSuTiLs. La utilidad en cuestión se llama JosHandle... siempre tuve la ligera sospecha de que fue hecho en Delphi. Ahora que veo el sitio parece que lo ha actualizado (no tiene esa apariencia la versión que yo tenía).

No vi tus adjuntos Neftali, pero por la imagen que adjuntas, diria que es lo mismo que ofrece JosHandle.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 02-04-2008
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Gracias por las respuestas, la idea según la describieron, ejecutan un programa en segundo plano, capturan la pantalla que este en ejecución de cualquier programa de gestión, y crean un archivo que desde su programa y esto es lo que no queda claro, queda de fondo para AUTOCREAR una pantalla lo más parecido posible a la pantalla capturada.

Neftali, el programa que me quieren vender era de gestión, utilizando capturas de mi programa, actual, como idea me parece muy interesante, pero no se yo moralmente, aún que las pantallas de gestión suelen ser +- parecidas, pero aparte de que la situación de mi empresa no es precisamente boyante, me dolería pagar por un programa de gestión cuando quiero hacerme yo adaptado a mis necesidades.

he visto la imagen que pones y pienso que si es posible, por que obtienen el tipo de componente, la posición, solo fletaría saber el tamaño y situación (al frente/fondo). quede una herramienta muy curiosa, no os parece.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #9  
Antiguo 03-04-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por José Luis Garcí Ver Mensaje
...he visto la imagen que pones y pienso que si es posible, por que obtienen el tipo de componente, la posición, solo fletaría saber el tamaño y situación (al frente/fondo).
En realidad ese ejemplo está hecho en un rato, pero se pueden obtener muchas más características de cada componente. Así que en teoría se puede hacer.
De todas formas, como ya te dije, hay otras formas más sencillas de obtener el DFM; Como puede ser, por ejemplo, Dede, para programas hechos en Delphi.

2 inconvenentes/problemas principales le veo a esto:

(1) Que lo que obtienes es el DFM (de alguna de las formas descritas); Pero NUNCA obtendrás nada de código, por lo tanto estás muy lejos de obtener un formulario funcional.
(2) Está limitado a componentes estandard. Cualquier otro componente que no sea de los estandard de Delphi no se podrá crear (inicialmente).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 03-04-2008
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Cita:
Empezado por Neftali Ver Mensaje
En realidad ese ejemplo está hecho en un rato, pero se pueden obtener muchas más características de cada componente. Así que en teoría se puede hacer.
De todas formas, como ya te dije, hay otras formas más sencillas de obtener el DFM; Como puede ser, por ejemplo, Dede, para programas hechos en Delphi.

2 inconvenentes/problemas principales le veo a esto:

(1) Que lo que obtienes es el DFM (de alguna de las formas descritas); Pero NUNCA obtendrás nada de código, por lo tanto estás muy lejos de obtener un formulario funcional.
(2) Está limitado a componentes estandard. Cualquier otro componente que no sea de los estandard de Delphi no se podrá crear (inicialmente).
Estoy totalmente de acuerdo en el tema de que solo crearíamos el DFM con su pas básico, pero el Dede es un de compilador de delphi, mientras que el programa que me comentaban, era sobre cualquier ventana que capturarán, independientemente de que lenguaje se realizara.

Yo lo veo de la siguiente manera, te gusta un diseño, hecho por ti en cualquier otro lenguaje, o realizado por terceros, capturas creas el dfm, trabajas cambiando, lo necesario, añadiendo y quitando de aqui y de allá, y tienes un form en mucho menos tiempo que habitualmente, además cuentas con la ventaja de que ya sabes como puede quedar el diseñó por que partes de una captura.

Neftali si esas pruebas las has realizado en un rato, de mayor quiero ser como tú.

--------------------------------------------------------------------------------------------------------------------------------------------

Veo que obtienen la posición y el tamaño de los componentes estándar, pero no veo el form ni el caption ni tamaños, etc, no se puede obtener. si me permites intentare este fin de semana partiendo del ejemplo, recorrer el árbol e intentar crear una dfm, pero solo si es posible saber el tamaño del form, de todas maneras yo soy mucho más lento programando, intentare terminar un ejemplo y colgarlo, un saludo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 03-04-2008 a las 20:18:14. Razón: Visto la prueba de explorar una ventana2
Responder Con Cita
  #11  
Antiguo 04-04-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por José Luis Garcí Ver Mensaje
...pero el Dede es un de compilador de delphi, mientras que el programa que me comentaban, era sobre cualquier ventana que capturarán, independientemente de que lenguaje se realizara.
Exactamente; Cada uno tiene sus ventajas e inconvenientes; Al hacerlo con una aplicación de este estilo, te sirve para cualquier lenguaje, pero por contra, al hacerlo con Dede (por ejemplo) el DFM que obtienes es exactamente el que ves en pantalla; El sistema de obtenerlo no es el mismo. Dudo que con una aplicación que recorra las ventanas (aunque obtengas muchas propiedades) llegues a obtenerlas todas; Por ejemplo no creo que puedas obtener los Anchors, los constraits de tamaño, las propiedades de Drag,... Mientras que con Dede sí las obtendrás.

Otra ventaja de Dede es que te permite saber qué eventos de han programado (aunque nunca te dará el código).


Cita:
Empezado por José Luis Garcí Ver Mensaje
Veo que obtienen la posición y el tamaño de los componentes estándar, pero no veo el form ni el caption ni tamaños, etc, no se puede obtener. si me permites intentare este fin de semana partiendo del ejemplo, recorrer el árbol e intentar crear una dfm, pero solo si es posible saber el tamaño del form, de todas maneras yo soy mucho más lento programando, intentare terminar un ejemplo y colgarlo...
Sí se pueden obtener los datos del form. Símplemente que al empezar a explrar yo lo he hecho en el ejemplo empezando directamente por los "hijos"; Es decir, por lo componentes del form:

Código Delphi [-]
    // Explorar
    EnumChildWindows(HWActive, @EnumWindowsProc, lParam(@Param));

La variable HWActive contiene el Handle de la ventana que has marcado (del form), por lo tanto si con ese Handle usas GetWindowsRect, GetClassName y el resto de funciones que hay más arriba, obtendrás los datos del form principal.

Revisa la API GetClassInfoEx; Creo que te dará más info sobre la clase. Y GetWindowLong que te dará más datos sobre la ventana.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
dispositivo de capturas de huellas kadith aguas MySQL 17 15-03-2013 14:55:49
ANN: AnyNET-Delphi: Herramienta para generar codigo fuente Delphi desde :NET mamcx Noticias 7 21-05-2007 02:12:36
de codigo VB a codigo Delphi ingel Impresión 2 20-07-2004 14:15:44
Guardado Sucesivo De Capturas De Imagen Niko Varios 5 18-05-2004 08:02:45


La franja horaria es GMT +2. Ahora son las 21:50:14.


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