Перечислите элементы управления VCL во внешнем приложении

StackOverflow https://stackoverflow.com/questions/1619748

  •  06-07-2019
  •  | 
  •  

Вопрос

возможно ли с помощью Windows API перечислять и повторять элементы управления VCL в форме (TForm), принадлежащей внешнему приложению Win32, написанному на C ++ Builder или Delphi.

Пока.

Это было полезно?

Решение

Нет.Прежде всего, учтите, что Windows API понятия не имеет, что такое "VCL".Он не знает "TButton" или "TStringGrid", и он, конечно же, не знает "TImage" или "TLabel", у которых даже нет дескрипторов окна.

Ты мог бы использование EnumChildWindows чтобы получить дескрипторы к оконным элементам управления.Ты мог бы посмотрите на названия их классов чтобы определить, что они пришли из "TButton" или "TStringGrid", но даже тогда у вас не было бы доступа к каким-либо средствам, связанным с объектом.У вас не было бы ссылки на объект, и поэтому вы не смогли бы прочитать какие-либо свойства или вызвать какие-либо методы.

Тест завершен, от Automated QA, предлагает доступ к формам и классам программы из внешней программы, что похоже на то, что вы, возможно, пытаетесь сделать.Это работает благодаря наличию модуля, который вы включаете в программу Delphi, и этот модуль, по сути, предоставляет программе TestComplete запасной выход, который она может использовать для запроса внутренних компонентов программы.Это требует сотрудничества со стороны разработчика приложения;вы не можете использовать TestComplete для произвольной программы.

Другие советы

Вы могли бы посмотреть на DFMS, которые хранятся как ресурсы в исполняемом файле.

Андерс Ульссон собрал воедино Приложение для сканирования VCL это было сделано именно так некоторое время назад.В исходный код также доступен.

Вплоть до Delphi 2006 вы могли использовать vcltest3.dll для этого.Но теперь вы должны пойти тем путем, который предлагает Роб Кеннеди.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top