Pregunta

es posible a través de la API de Windows para enumerar e iterar los controles VCL en un formulario (TForm) que pertenece a una aplicación Win32 externa escrita en C ++ Builder o Delphi.

Adiós.

¿Fue útil?

Solución

No. En primer lugar, considere que la API de Windows no tiene idea de lo que " VCL " es. No sabe " TButton " o " TStringGrid, " y ciertamente no sabe " TImage " o " TLabel, " que ni siquiera tienen tiradores de ventana.

Usted podría usar EnumChildWindows para obtener identificadores para los controles de ventana. Puede consultar los nombres de sus clases para determinar si provienen de " TButton " o " TStringGrid, " pero aún así, no tendría acceso a ninguna instalación relacionada con objetos. No tendría una referencia de objeto, por lo que no podría leer ninguna propiedad ni llamar a ningún método.

TestComplete , de Automated QA, ofrece acceso a los formularios y clases de un programa desde un externo programa, que suena como lo que podría estar tratando de hacer. Funciona al tener una unidad que incluye en el programa Delphi, y esa unidad esencialmente proporciona una puerta trasera para que el programa TestComplete lo use para consultar las partes internas del programa. Eso requiere la cooperación del desarrollador de la aplicación; no puede sic TestComplete en un programa arbitrario.

Otros consejos

Puede ver los DFM, que se almacenan como recursos en el archivo ejecutable.

Anders Ohlsson creó una aplicación VCL Scanner que hace esto hace un tiempo. El código fuente también está disponible.

Hasta Delphi 2006, puede utilizar vcltest3.dll para esto. Pero ahora tienes que seguir el camino que propone Rob Kennedy.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top