Используйте UI Automation для старых сторонних элементов управления - PullRequest
3 голосов
/ 21 февраля 2012

Существует ли готовый способ создания поставщика автоматизации пользовательского интерфейса для сторонних элементов управления, которые не поддерживают автоматизацию пользовательского интерфейса?

Моя проблема: я пытаюсь автоматизировать приложение vb6 с помощью элемента управления ActiveX VsFlexGrid и не удаетсяполучить доступ к его свойствам и методам.

Спасибо

1 Ответ

3 голосов
/ 23 февраля 2012

Это возможно, но это много работы , и не подходит для всех обстоятельств.

Основные требования заключаются в том, что целевой элемент управления:

  • имеет собственный HWND, предпочтительно с хорошо известным и стабильным именем класса.

  • имеет четко определенный способ связи с этим элементом управления из другого процесса.В эту категорию попадают элементы управления, использующие некоторый набор сообщений Windows (например, общие элементы управления Win32), а также элементы управления, такие как элемент управления MS Internet Explorer, который предоставляет расширенный интерфейс (IHTMLDocument).

Но если элемент управления не имеет какого-либо способа внешнего доступа к своей информации, то автоматизация пользовательского интерфейса не сильно поможет: все, что здесь делает UIA, - это позволяет вам вставить класс адаптера в его существующую среду;но он не дает вам никаких новых или дополнительных инструментов для того, чтобы в первую очередь получить доступ к базовой информации.

Старые элементы управления ActiveX VB-эры представляют собой проблему: если вы можете получить один элемент управления наФорма, вы можете использовать различные COM-интерфейсы для перехода к другим элементам управления в этой форме и доступа к их свойствам.Но выгода в том, что вы не можете легко сделать это из другого процесса.И лишь немногие из этих элементов управления ActiveX поддерживают какие-либо сообщения Windows, так как они предполагают, что клиентский код будет использовать интерфейсы COM.

...