Я пытаюсь использовать System.Windows.Automation для доступа к элементу пользовательского интерфейса в медиаплеере VLC (в частности, в поле состояния в крайнем левом углу, которое показывает имя файла воспроизводимого в данный момент видео). Я могу получить родительский элемент и элемент родного элемента, но в Spy ++ все элементы, у которых есть затемненный значок, недоступны в коде ... Я предполагаю, что затемненный значок означает, что они закрыты или скрыты или что-то в этом роде , Вот изображение, показывающее, что я имею в виду:
Обратите внимание, что у меня есть ссылка на родителя с дескриптором 0x30826, и я выполняю FindAll () * для этого и в результате получаю только один результат - ссылку на дочерний элемент с дескриптором 0x30858. Вы можете видеть, что в Spy ++ есть 5 детей 0x30826, но только один из них, тот, который я получаю, когда делаю FindAll, имеет полностью черный значок, остальные имеют серый значок, и я не могу к ним добраться. Обратите также внимание, что я хочу 0x20908, и у него есть серый значок ...
Как я могу получить это в коде?
* Это код, который я использую, чтобы получить всех детей 0x30826:
Dim aeDesktop As AutomationElement
Dim aeVLC As AutomationElement
Dim c As AutomationElementCollection
Dim cd As New AndCondition(New PropertyCondition(AutomationElement.IsEnabledProperty, True), New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.StatusBar))
aeVLC = aeDesktop.FindFirst(TreeScope.Children, New PropertyCondition(AutomationElement.NameProperty, "got s01e01.avi - VLC media player"))
c = aeVLC.FindAll(TreeScope.Children, cd)
c = c(0).FindAll(TreeScope.Children, Condition.TrueCondition)
Первый FindAll () дает мне только 0x30826, что хорошо, потому что это то, что я хочу, но второй FindAll, без заданных условий, дает только 0x30858, когда я вижу это плюс 4 других в Spy ++, включая тот, который Я хочу.