Что нового

UIAutomate - автоматизация нестандартных элементов GUI

joker85

Новичок
Сообщения
9
Репутация
0
Да, ошибки. Первая: ошибка создания объекта массива. Обычно такое случается при большом количестве элементов. Попробуйте сначала найти панель, в которой находится этот Edit. Потом используйте эту панель в качестве родителя для поиска Edit.
Вы про это говорите?
Код:
[I][B]ControlType:    UIA_EditControlTypeId (0xC354)[/B][/I]
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,960
Репутация
1,451
Это тип элемента "Фамилия" значение которого нужно получить.
 

joker85

Новичок
Сообщения
9
Репутация
0
Это тип элемента "Фамилия" значение которого нужно получить.
нету панелей

Вот что выдает сам AutoIt Window Info (x64)

Код:
>>>> Window <<<<
Title:    Менеджер приложений | Microsoft SQL Server | Administrator A.A. (snadmin)
Class:    WindowsForms10.Window.8.app.0.1569a64_r6_ad1
Position:    -8, -8
Size:    1936, 1056
Style:    0x17CF0000
ExStyle:    0x00050100
Handle:    0x00000000004C0720

>>>> Control <<<<
Class:    WindowsForms10.Window.8.app.0.1569a64_r6_ad1
Instance:    35
ClassnameNN:    WindowsForms10.Window.8.app.0.1569a64_r6_ad135
Name:    
Advanced (Class):    [CLASS:WindowsForms10.Window.8.app.0.1569a64_r6_ad1; INSTANCE:35]
ID:    1120166
Text:    PropertyGridView
Position:    103, 642
Size:    1434, 344
ControlClick Coords:    310, 74
Style:    0x56010000
ExStyle:    0x00000000
Handle:    0x00000000001117A6

>>>> Mouse <<<<
Position:    413, 739
Cursor ID:    0
Color:    0xFFFFB6

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
Приложения
Пропуска сотрудников
Пропуска сотрудников
Все поля
PropertyGrid
PropertyGridView
toolStrip


>>>> Hidden Text <<<<
АБРЄЄВА
Все поля
PropertyGrid
PropertyGridView
Capture
toolStrip
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,960
Репутация
1,451
Панели нужно искать в дереве Inspect.

выдает сам AutoIt Window Info (x64)
Если у контрола не меняются Class и Instance, то попробуйте так
Код:
#include <UIAutomate.au3>

$hWnd = ControlGetHandle("Менеджер приложений", "", "WindowsForms10.Window.8.app.0.1569a64_r6_ad135")
$oParent = _UIA_GetElementFromHandle($hWnd)
$oElem = _UIA_GetControlTypeElement($oParent, "UIA_EditControlTypeId", "Фамилия", "LegacyIAccessible.Name")
$sVal1 = _UIA_ElementGetPropertyValue($oElem, "Value.Value")
ConsoleWrite($sVal1 & @CRLF)
$sVal2 = _UIA_ElementGetPropertyValue($oElem, "LegacyIAccessible.Value")
ConsoleWrite($sVal2 & @CRLF)
 

joker85

Новичок
Сообщения
9
Репутация
0
// Всё равно выдаёт 0, честно, я да же не понимаю как к Панеля обращаться. Смотрите скрин. Панель "Фамилия"?
 

Вложения

  • 0000000000000000.png
    0000000000000000.png
    284.1 КБ · Просмотры: 10
Автор
I

InnI

AutoIT Гуру
Сообщения
4,960
Репутация
1,451
Есть элемент "Окно свойств" таблицу, который является родителем для множества других элементов какого-то типа. Среди этих других элементов есть "Фамилия". В то же время, в списке присутствует элемент "Фамилия" поле, но отсутствуют другие идентичные ("Имя" поле, "Отчество" поле и т.д.). Можно сделать вывод, что элементы "..." поле создаются либо при клике по ним, либо при наведении курсора мыши во время поиска утилитой. Следовательно, прямым поиском по дереву эти "поля" найти не получится.

Попробуйте следующее. Запустите Inspect и раскрывайте дерево главного окна, кликая по "плюсикам", чтобы получился "прямой путь" до элемента "Окно свойств" таблицу. Теперь раскройте этот элемент. Будет ли в перечне элемент "Фамилия" поле? Скорее всего - нет. Теперь раскройте элемент "Фамилия". Будет ли он содержать дочерние? Скорее всего - нет.
 

joker85

Новичок
Сообщения
9
Репутация
0
Есть элемент "Окно свойств" таблицу, который является родителем для множества других элементов какого-то типа. Среди этих других элементов есть "Фамилия". В то же время, в списке присутствует элемент "Фамилия" поле, но отсутствуют другие идентичные ("Имя" поле, "Отчество" поле и т.д.). Можно сделать вывод, что элементы "..." поле создаются либо при клике по ним, либо при наведении курсора мыши во время поиска утилитой. Следовательно, прямым поиском по дереву эти "поля" найти не получится.

Попробуйте следующее. Запустите Inspect и раскрывайте дерево главного окна, кликая по "плюсикам", чтобы получился "прямой путь" до элемента "Окно свойств" таблицу. Теперь раскройте этот элемент. Будет ли в перечне элемент "Фамилия" поле? Скорее всего - нет. Теперь раскройте элемент "Фамилия". Будет ли он содержать дочерние? Скорее всего - нет.
Вы правы
поле создаются либо при клике по ним, либо при наведении курсора мыши во время поиска утилитой
 

SharkyEXE

Новичок
Сообщения
136
Репутация
0
Всем здравствуйте.

Пожалуйста, очень нужно, возможно или нет, в этом ненормальном окне, для нормальных окон просто кнопки "Button1", "Button2", нажать один раз на ненормальную кнопку "Остаться в бесплатной версии"

Спасибо.
 

Вложения

  • Захват3.jpg
    Захват3.jpg
    348.2 КБ · Просмотры: 5

joiner

Модератор
Локальный модератор
Сообщения
3,561
Репутация
629
клик по координатам
 

SharkyEXE

Новичок
Сообщения
136
Репутация
0
клик по координатам
Здравствуйте

Попытался воспользоваться таким

Код:
#include <UIAutomate.au3>
$oParent = _UIA_GetElementFromHandle(WinGetHandle("AdGuard VPN (release)"))
voElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Остаться в бесплатной версии", "LegacyIAccessible.Name")
_UIA_ElementDoDefaultAction($oElement)


Но при запуске - кнопка "Остаться в бесплатной версии" нажимается, все вроде как получилось

Но так и не могу понять - а возможно или нет сделать условие, я хочу завернуть в While 1-WEnd

Если есть кнопка
$oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Остаться в бесплатной версии", "LegacyIAccessible.Name")
то выполнить действие
_UIA_ElementDoDefaultAction($oElement)
Иначе
Пауза 1000

Так пробовал, не работает

Код:
#include <UIAutomate.au3>
While 1
$oParent = _UIA_GetElementFromHandle(WinGetHandle("AdGuard VPN (release)"))
If $oElement = _UIA_GetControlTypeElement($oParent, "UIA_ButtonControlTypeId", "Остаться в бесплатной версии", "LegacyIAccessible.Name") Then
_UIA_ElementDoDefaultAction($oElement)
Exit
Else
Sleep (1000)
EndIf
WEnd

Сообщение автоматически объединено:

Пожалуйста, если возможно, помогите переделать это для кнопки


У меня НЕ срабатывает

Код:
$Text = "Остаться в бесплатной версии"
# $oElement = _UIA_GetControlTypeElement($oParent, "UIA_TextControlTypeId", $Text, "Name", True)
If IsObj($oElement) Then ConsoleWrite("Текст найден" & @CRLF)
 
Последнее редактирование:
Верх