Question

est possible via l’API Windows d’énumérer et d’itérer les contrôles VCL d’un formulaire (TForm) appartenant à une application Win32 externe écrite en C ++ Builder ou Delphi.

Au revoir.

Était-ce utile?

La solution

Non. Tout d’abord, considérez que l’API Windows n’a aucune idée de ce que la & V; VCL " est. Il ne sait pas "TButton". ou & TS; TStringGrid, " et il ne sait certainement pas "TImage". ou & TL; TLabel, " qui n'ont même pas de poignées de fenêtre.

Vous pouvez utiliser EnumChildWindows pour obtenir les descripteurs des contrôles fenêtrés. Vous pouvez regarder leurs noms de classe pour déterminer s'ils venaient de " TButton " ou & TS; TStringGrid, " mais même dans ce cas, vous n’auriez accès à aucune installation liée à un objet. Vous n'auriez pas de référence à un objet et vous ne pourriez donc lire aucune propriété ni appeler aucune méthode.

TestComplete , à partir du contrôle qualité automatisé, permet d'accéder aux formulaires et aux classes d'un programme à partir d'un site externe. programme, qui ressemble à ce que vous essayez peut-être de faire. Cela fonctionne en ayant une unité que vous incluez dans le programme Delphi, et cette unité fournit essentiellement une porte dérobée au programme TestComplete à utiliser pour interroger les éléments internes du programme. Cela nécessite la coopération du développeur de l'application; vous ne pouvez pas sic TestComplete sur un programme arbitraire.

Autres conseils

Vous pouvez consulter les DFM, qui sont stockés en tant que ressources dans l'exécutable.

Anders Ohlsson a mis au point une application du scanner VCL qui le fait il y a quelque temps déjà. Le code source est également disponible.

Jusqu'à Delphi 2006, vous pouviez utiliser le vcltest3.dll pour cela. Mais maintenant, vous devez suivre les recommandations de Rob Kennedy.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top