Advertisement
Guest User

UIAutomate.au3

a guest
Jul 1st, 2021
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 83.95 KB | None | 0 0
  1. #include-once
  2. #include <Debug.au3>
  3. #include <WinAPI.au3>
  4. #include <UIAConstants.au3>
  5.  
  6. ; ============================================================================================
  7. ; Название      : UIAutomate.au3
  8. ; Версия AutoIt : 3.3.10.0 +
  9. ; Версия UDF    : 1.8
  10. ; Описание      : Набор функций для работы с элементами GUI посредством API UIAutomation
  11. ; Автор         : InnI
  12. ; ============================================================================================
  13.  
  14. ; #ГЛОБАЛЬНЫЕ_ПЕРЕМЕННЫЕ# ====================================================================
  15. Global $UIA_ConsoleWriteError = 1 ; Вывод описания ошибок в консоль
  16. Global $UIA_DefaultWaitTime = 5   ; Время ожидания по умолчанию в секундах
  17. Global $UIA_ElementVersion = 1    ; Версия элемента: 0-авто; 1-WIN_7 и ниже; 2-WIN_8; 3-WIN_81; 4,5-WIN_10; 6,7-WIN_10(1703)
  18. ; ============================================================================================
  19.  
  20. ; #ФУНКЦИИ# ==================================================================================
  21. ; _UIA_CreateLogicalCondition        Создаёт логическое условие на основе заданных условий
  22. ; _UIA_CreatePropertyCondition       Создаёт условие на основе свойства и его значения
  23. ; _UIA_ElementDoDefaultAction        Выполнение элементом действия по умолчанию
  24. ; _UIA_ElementFindInArray            Находит элемент, соответствующий заданному свойству и его значению
  25. ; _UIA_ElementGetBoundingRectangle   Определяет прямоугольную область, ограничивающую элемент
  26. ; _UIA_ElementGetFirstLastChild      Находит первый и последний дочерние элементы (объекты) указанного элемента
  27. ; _UIA_ElementGetParent              Определяет родительский элемент (объект) указанного элемента
  28. ; _UIA_ElementGetPreviousNext        Находит предыдущий и следующий элементы (объекты) того же уровня
  29. ; _UIA_ElementGetPropertyValue       Определяет значение заданного свойства элемента
  30. ; _UIA_ElementMouseClick             Выполняет клик мыши по элементу
  31. ; _UIA_ElementScrollIntoView         Прокручивает элемент в область видимости
  32. ; _UIA_ElementSetFocus               Устанавливает элементу фокус ввода
  33. ; _UIA_ElementTextSetValue           Устанавливает значение (текст) в текстовый элемент
  34. ; _UIA_FindAllElements               Находит все элементы, соответствующие заданному свойству и его значению
  35. ; _UIA_FindAllElementsEx             Находит все элементы, соответствующие условию поиска
  36. ; _UIA_FindElementsInArray           Находит все элементы, соответствующие заданному свойству и его значению
  37. ; _UIA_GetControlTypeElement         Находит элемент (объект) указанного типа с заданным свойством и значением
  38. ; _UIA_GetElementFromCondition       Находит элемент (объект) на основе заданного условия
  39. ; _UIA_GetElementFromFocus           Создаёт элемент (объект) на основе фокуса ввода
  40. ; _UIA_GetElementFromHandle          Создаёт элемент (объект) на основе дескриптора
  41. ; _UIA_GetElementFromPoint           Создаёт элемент (объект) на основе экранных координат
  42. ; _UIA_ObjectCreate                  Создаёт объект UIAutomation
  43. ; _UIA_WaitControlTypeElement        Ожидает элемент (объект) указанного типа с заданным свойством и значением
  44. ; _UIA_WaitElementFromCondition      Ожидает элемент (объект) на основе заданного условия
  45. ; ============================================================================================
  46.  
  47. ; #ДЛЯ_ВНУТРЕННЕГО_ИСПОЛЬЗОВАНИЯ# ============================================================
  48. ; __UIA_ConsoleWriteError
  49. ; __UIA_CreateElement
  50. ; __UIA_GetPropIdFromStr
  51. ; __UIA_GetTypeIdFromStr
  52. ; ============================================================================================
  53.  
  54. ; ============================================================================================
  55. ; Имя функции : _UIA_CreateLogicalCondition
  56. ; Описание    : Создаёт логическое условие на основе заданных условий
  57. ; Синтаксис   : _UIA_CreateLogicalCondition($oCondition1[, $sOperator = "NOT"[, $oCondition2 = 0]])
  58. ; Параметры   : $oCondition1 - первое условие
  59. ;             : $sOperator   - логический оператор (строка)
  60. ;             :              "NOT" - логическое НЕ (по умолчанию)
  61. ;             :              "AND" - логическое И
  62. ;             :              "OR"  - логическое ИЛИ
  63. ;             : $oCondition2 - второе условие
  64. ; Возвращает  : Успех   - условие
  65. ;             : Неудача - 0 и устанавливает @error
  66. ;             :         @error = 1 - первое условие не определено
  67. ;             :         @error = 2 - ошибка создания объекта UIAutomation
  68. ;             :         @error = 3 - второе условие не определено
  69. ;             :         @error = 4 - ошибка создания условия
  70. ;             :         @error = 5 - неизвестный условный оператор
  71. ; Автор       : InnI
  72. ; Примечание  : При использовании оператора "NOT" второе условие игнорируется
  73. ; ============================================================================================
  74. Func _UIA_CreateLogicalCondition($oCondition1, $sOperator = "NOT", $oCondition2 = 0)
  75.     If Not IsObj($oCondition1) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : первое условие не определено"), 0)
  76.     Local $pCondition, $oCondition, $oUIAutomation = _UIA_ObjectCreate()
  77.     If @error Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : ошибка создания объекта UIAutomation"), 0)
  78.     Switch $sOperator
  79.         Case "NOT"
  80.             $oUIAutomation.CreateNotCondition($oCondition1, $pCondition)
  81.             $oCondition = ObjCreateInterface($pCondition, $sIID_IUIAutomationNotCondition, $dtagIUIAutomationNotCondition)
  82.             If Not IsObj($oCondition) Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : ошибка создания условия"), 0)
  83.         Case "AND"
  84.             If Not IsObj($oCondition2) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : второе условие не определено"), 0)
  85.             $oUIAutomation.CreateAndCondition($oCondition1, $oCondition2, $pCondition)
  86.             $oCondition = ObjCreateInterface($pCondition, $sIID_IUIAutomationAndCondition, $dtagIUIAutomationAndCondition)
  87.             If Not IsObj($oCondition) Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : ошибка создания условия"), 0)
  88.         Case "OR"
  89.             If Not IsObj($oCondition2) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : второе условие не определено"), 0)
  90.             $oUIAutomation.CreateOrCondition($oCondition1, $oCondition2, $pCondition)
  91.             $oCondition = ObjCreateInterface($pCondition, $sIID_IUIAutomationOrCondition, $dtagIUIAutomationOrCondition)
  92.             If Not IsObj($oCondition) Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : ошибка создания условия"), 0)
  93.         Case Else
  94.             Return SetError(5, __UIA_ConsoleWriteError("_UIA_CreateLogicalCondition : неизвестный условный оператор (" & $sOperator & ")"), 0)
  95.     EndSwitch
  96.     Return $oCondition
  97. EndFunc   ;==>_UIA_CreateLogicalCondition
  98.  
  99. ; ============================================================================================
  100. ; Имя функции : _UIA_CreatePropertyCondition
  101. ; Описание    : Создаёт условие на основе свойства и его значения
  102. ; Синтаксис   : _UIA_CreatePropertyCondition($vProperty, $vPropertyValue)
  103. ; Параметры   : $vProperty      - свойство элемента
  104. ;             : $vPropertyValue - значение свойства элемента
  105. ; Возвращает  : Успех   - условие
  106. ;             : Неудача - 0 и устанавливает @error
  107. ;             :         @error = 1 - ошибка создания объекта UIAutomation
  108. ;             :         @error = 2 - ошибка преобразования свойства
  109. ;             :         @error = 3 - ошибка создания условия (см. примечание о типизации)
  110. ; Автор       : InnI
  111. ; Примечание  : Название свойства можно скопировать из левой части списка утилиты Inspect
  112. ;             : Значение свойства можно скопировать из правой части списка утилиты Inspect
  113. ;             : Значения свойств типизированы. Например, для свойства "IsEnabled" нужно указывать значение True, а не 1 и не "True"
  114. ; ============================================================================================
  115. Func _UIA_CreatePropertyCondition($vProperty, $vPropertyValue)
  116.     Local $pCondition, $oCondition, $oUIAutomation = _UIA_ObjectCreate()
  117.     If @error Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_CreatePropertyCondition : ошибка создания объекта UIAutomation"), 0)
  118.     $vProperty = __UIA_GetPropIdFromStr($vProperty, "_UIA_CreatePropertyCondition")
  119.     If $vProperty = -1 Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_CreatePropertyCondition : ошибка преобразования свойства"), 0)
  120.     $oUIAutomation.CreatePropertyCondition($vProperty, $vPropertyValue, $pCondition)
  121.     $oCondition = ObjCreateInterface($pCondition, $sIID_IUIAutomationPropertyCondition, $dtagIUIAutomationPropertyCondition)
  122.     If Not IsObj($oCondition) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_CreatePropertyCondition : ошибка создания условия (см. примечание о типизации)"), 0)
  123.     Return $oCondition
  124. EndFunc   ;==>_UIA_CreatePropertyCondition
  125.  
  126. ; ============================================================================================
  127. ; Имя функции : _UIA_ElementDoDefaultAction
  128. ; Описание    : Выполнение элементом действия по умолчанию
  129. ; Синтаксис   : _UIA_ElementDoDefaultAction($oElement)
  130. ; Параметры   : $oElement - элемент (объект)
  131. ; Возвращает  : Успех   - 1
  132. ;             : Неудача - 0 и устанавливает @error
  133. ;             :         @error = 1 - параметр не является объектом
  134. ;             :         @error = 2 - ошибка создания объекта на основе шаблона LegacyIAccessible
  135. ;             :         @error = 3 - ошибка выполнения метода
  136. ; Автор       : InnI
  137. ; Примечание  :
  138. ; ============================================================================================
  139. Func _UIA_ElementDoDefaultAction($oElement)
  140.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementDoDefaultAction : параметр не является объектом"), 0)
  141.     Local $pIAccess, $oIAccess
  142.     $oElement.GetCurrentPattern($UIA_LegacyIAccessiblePatternId, $pIAccess)
  143.     $oIAccess = ObjCreateInterface($pIAccess, $sIID_IUIAutomationLegacyIAccessiblePattern, $dtagIUIAutomationLegacyIAccessiblePattern)
  144.     If Not IsObj($oIAccess) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementDoDefaultAction : ошибка создания объекта на основе шаблона LegacyIAccessible"), 0)
  145.     Local $iErrorCode = $oIAccess.DoDefaultAction()
  146.     If $iErrorCode Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementDoDefaultAction : ошибка выполнения метода (0x" & Hex($iErrorCode) & ")"), 0)
  147.     Return 1
  148. EndFunc   ;==>_UIA_ElementDoDefaultAction
  149.  
  150. ; ============================================================================================
  151. ; Имя функции : _UIA_ElementFindInArray
  152. ; Описание    : Находит элемент, соответствующий заданному свойству и его значению
  153. ; Синтаксис   : _UIA_ElementFindInArray(Const ByRef $aElements, $vProperty, $vPropertyValue[, $fInStr = False[, $iStartIndex = 1[, $fToEnd = True]]])
  154. ; Параметры   : $aElements      - массив элементов (объектов)
  155. ;             : $vProperty      - свойство искомого элемента
  156. ;             : $vPropertyValue - значение свойства искомого элемента
  157. ;             : $fInStr         - полное совпадение значения свойства (по умолчанию) или частичное
  158. ;             : $iStartIndex    - индекс начала поиска (по умолчанию 1)
  159. ;             : $fToEnd         - направление поиска: в конец массива (по умолчанию) или в начало массива
  160. ; Возвращает  : Успех   - индекс элемента (объекта) в исходном массиве
  161. ;             : Неудача - 0 и устанавливает @error
  162. ;             :         @error = 1 - первый параметр не является массивом
  163. ;             :         @error = 2 - пустой массив
  164. ;             :         @error = 3 - многомерный массив
  165. ;             :         @error = 4 - элемент массива [0] не соответствует количеству остальных элементов
  166. ;             :         @error = 5 - массив не содержит элементов
  167. ;             :         @error = 6 - элемент массива [индекс] не является объектом
  168. ;             :         @error = 7 - ошибка преобразования свойства
  169. ;             :         @error = 8 - некорректный индекс начала поиска
  170. ; Автор       : InnI
  171. ; Примечание  : Элемент массива с нулевым индексом должен содержать количество объектов
  172. ;             : Название свойства можно скопировать из левой части списка утилиты Inspect
  173. ;             : Значение свойства можно скопировать из правой части списка утилиты Inspect
  174. ; ============================================================================================
  175. Func _UIA_ElementFindInArray(Const ByRef $aElements, $vProperty, $vPropertyValue, $fInStr = False, $iStartIndex = 1, $fToEnd = True)
  176.     If Not IsArray($aElements) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : первый параметр не является массивом"), 0)
  177.     If Not UBound($aElements) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : пустой массив"), 0)
  178.     If UBound($aElements, 0) > 1 Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : многомерный массив"), 0)
  179.     If $aElements[0] <> UBound($aElements) - 1 Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : элемент массива [0] не соответствует количеству остальных элементов"), 0)
  180.     If Not $aElements[0] Then Return SetError(5, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : массив не содержит элементов"), 0)
  181.     For $i = 1 To $aElements[0]
  182.         If Not IsObj($aElements[$i]) Then Return SetError(6, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : элемент массива [" & $i & "] не является объектом"), 0)
  183.     Next
  184.     $vProperty = __UIA_GetPropIdFromStr($vProperty, "_UIA_ElementFindInArray")
  185.     If $vProperty = -1 Then Return SetError(7, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : ошибка преобразования свойства"), 0)
  186.     $iStartIndex = Int($iStartIndex)
  187.     If $iStartIndex < 1 Or $iStartIndex > $aElements[0] Then Return SetError(8, __UIA_ConsoleWriteError("_UIA_ElementFindInArray : некорректный индекс начала поиска"), 0)
  188.     Local $vValue, $iEndIndex = $aElements[0], $iStep = 1
  189.     If Not $fToEnd Then
  190.         $iEndIndex = 1
  191.         $iStep = -1
  192.     EndIf
  193.     For $i = $iStartIndex To $iEndIndex Step $iStep
  194.         $aElements[$i].GetCurrentPropertyValue($vProperty, $vValue)
  195.         If $fInStr Then
  196.             If StringInStr($vValue, $vPropertyValue) Then Return $i
  197.         Else
  198.             If $vPropertyValue = $vValue Then Return $i
  199.         EndIf
  200.         $vValue = 0
  201.     Next
  202.     Return 0
  203. EndFunc   ;==>_UIA_ElementFindInArray
  204.  
  205. ; ============================================================================================
  206. ; Имя функции : _UIA_ElementGetBoundingRectangle
  207. ; Описание    : Определяет прямоугольную область, ограничивающую элемент
  208. ; Синтаксис   : _UIA_ElementGetBoundingRectangle($oElement)
  209. ; Параметры   : $oElement - элемент (объект)
  210. ; Возвращает  : Успех   - массив
  211. ;             :         $aArray[0] - X координата верхнего левого угла элемента
  212. ;             :         $aArray[1] - Y координата верхнего левого угла элемента
  213. ;             :         $aArray[2] - X координата нижнего правого угла элемента
  214. ;             :         $aArray[3] - Y координата нижнего правого угла элемента
  215. ;             : Неудача - 0 и устанавливает @error
  216. ;             :         @error = 1 - параметр не является объектом
  217. ;             :         @error = 2 - ошибка создания массива координат
  218. ; Автор       : InnI
  219. ; Примечание  : Координаты прямоугольника - экранные
  220. ; ============================================================================================
  221. Func _UIA_ElementGetBoundingRectangle($oElement)
  222.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementGetBoundingRectangle : параметр не является объектом"), 0)
  223.     Local $tRect = DllStructCreate("long Left;long Top;long Right;long Bottom")
  224.     $oElement.CurrentBoundingRectangle($tRect)
  225.     Local $aRect[4] = [$tRect.Left, $tRect.Top, $tRect.Right, $tRect.Bottom]
  226.     $tRect = 0
  227.     If Not IsArray($aRect) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementGetBoundingRectangle : ошибка создания массива координат"), 0)
  228.     Return $aRect
  229. EndFunc   ;==>_UIA_ElementGetBoundingRectangle
  230.  
  231. ; ============================================================================================
  232. ; Имя функции : _UIA_ElementGetFirstLastChild
  233. ; Описание    : Находит первый и последний дочерние элементы (объекты) указанного элемента
  234. ; Синтаксис   : _UIA_ElementGetFirstLastChild($oElement)
  235. ; Параметры   : $oElement - элемент (объект)
  236. ; Возвращает  : Успех   - массив
  237. ;             :         $aArray[0] - первый дочерний элемент (объект)
  238. ;             :         $aArray[1] - последний дочерний элемент (объект)
  239. ;             : Неудача - 0 и устанавливает @error
  240. ;             :         @error = 1 - параметр не является объектом
  241. ;             :         @error = 2 - ошибка создания объекта UIAutomation
  242. ;             :         @error = 3 - ошибка создания объекта дерева
  243. ; Автор       : InnI
  244. ; Примечание  : Если первый/последний элемент отсутствует, то соответствующим элементом массива будет НЕ объект
  245. ; ============================================================================================
  246. Func _UIA_ElementGetFirstLastChild($oElement)
  247.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementGetFirstLastChild : параметр не является объектом"), 0)
  248.     Local $aFirstLast[2], $pFirstLast, $pRawWalker, $oRawWalker, $oUIAutomation = _UIA_ObjectCreate()
  249.     If @error Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementGetFirstLastChild : ошибка создания объекта UIAutomation"), 0)
  250.     $oUIAutomation.RawViewWalker($pRawWalker)
  251.     $oRawWalker = ObjCreateInterface($pRawWalker, $sIID_IUIAutomationTreeWalker, $dtagIUIAutomationTreeWalker)
  252.     If Not IsObj($oRawWalker) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementGetFirstLastChild : ошибка создания объекта дерева"), 0)
  253.     $oRawWalker.GetFirstChildElement($oElement, $pFirstLast)
  254.     $aFirstLast[0] = __UIA_CreateElement($pFirstLast)
  255.     $pFirstLast = 0
  256.     $oRawWalker.GetLastChildElement($oElement, $pFirstLast)
  257.     $aFirstLast[1] = __UIA_CreateElement($pFirstLast)
  258.     $pFirstLast = 0
  259.     Return $aFirstLast
  260. EndFunc   ;==>_UIA_ElementGetFirstLastChild
  261.  
  262. ; ============================================================================================
  263. ; Имя функции : _UIA_ElementGetParent
  264. ; Описание    : Определяет родительский элемент (объект) указанного элемента
  265. ; Синтаксис   : _UIA_ElementGetParent($oElement)
  266. ; Параметры   : $oElement - элемент (объект)
  267. ; Возвращает  : Успех   - родительский элемент (объект)
  268. ;             : Неудача - 0 и устанавливает @error
  269. ;             :         @error = 1 - параметр не является объектом
  270. ;             :         @error = 2 - ошибка создания объекта UIAutomation
  271. ;             :         @error = 3 - ошибка создания объекта дерева
  272. ; Автор       : InnI
  273. ; Примечание  : Если родительский элемент отсутствует, то функция вернёт НЕ объект
  274. ; ============================================================================================
  275. Func _UIA_ElementGetParent($oElement)
  276.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementGetParent : параметр не является объектом"), 0)
  277.     Local $pParent, $pRawWalker, $oRawWalker, $oUIAutomation = _UIA_ObjectCreate()
  278.     If @error Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementGetParent : ошибка создания объекта UIAutomation"), 0)
  279.     $oUIAutomation.RawViewWalker($pRawWalker)
  280.     $oRawWalker = ObjCreateInterface($pRawWalker, $sIID_IUIAutomationTreeWalker, $dtagIUIAutomationTreeWalker)
  281.     If Not IsObj($oRawWalker) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementGetParent : ошибка создания объекта дерева"), 0)
  282.     $oRawWalker.GetParentElement($oElement, $pParent)
  283.     Return __UIA_CreateElement($pParent)
  284. EndFunc   ;==>_UIA_ElementGetParent
  285.  
  286. ; ============================================================================================
  287. ; Имя функции : _UIA_ElementGetPreviousNext
  288. ; Описание    : Находит предыдущий и следующий элементы (объекты) того же уровня
  289. ; Синтаксис   : _UIA_ElementGetPreviousNext($oElement)
  290. ; Параметры   : $oElement - элемент (объект)
  291. ; Возвращает  : Успех   - массив
  292. ;             :         $aArray[0] - предыдущий элемент (объект)
  293. ;             :         $aArray[1] - следующий элемент (объект)
  294. ;             : Неудача - 0 и устанавливает @error
  295. ;             :         @error = 1 - параметр не является объектом
  296. ;             :         @error = 2 - ошибка создания объекта UIAutomation
  297. ;             :         @error = 3 - ошибка создания объекта дерева
  298. ; Автор       : InnI
  299. ; Примечание  : Если предыдущий/следующий элемент отсутствует, то соответствующим элементом массива будет НЕ объект
  300. ;             : Не находит собственного родителя в качестве предыдущего и чужого родителя в качестве следующего
  301. ; ============================================================================================
  302. Func _UIA_ElementGetPreviousNext($oElement)
  303.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementGetPreviousNext : параметр не является объектом"), 0)
  304.     Local $aPrevNext[2], $pPrevNext, $pRawWalker, $oRawWalker, $oUIAutomation = _UIA_ObjectCreate()
  305.     If @error Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementGetPreviousNext : ошибка создания объекта UIAutomation"), 0)
  306.     $oUIAutomation.RawViewWalker($pRawWalker)
  307.     $oRawWalker = ObjCreateInterface($pRawWalker, $sIID_IUIAutomationTreeWalker, $dtagIUIAutomationTreeWalker)
  308.     If Not IsObj($oRawWalker) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementGetPreviousNext : ошибка создания объекта дерева"), 0)
  309.     $oRawWalker.GetPreviousSiblingElement($oElement, $pPrevNext)
  310.     $aPrevNext[0] = __UIA_CreateElement($pPrevNext)
  311.     $pPrevNext = 0
  312.     $oRawWalker.GetNextSiblingElement($oElement, $pPrevNext)
  313.     $aPrevNext[1] = __UIA_CreateElement($pPrevNext)
  314.     $pPrevNext = 0
  315.     Return $aPrevNext
  316. EndFunc   ;==>_UIA_ElementGetPreviousNext
  317.  
  318. ; ============================================================================================
  319. ; Имя функции : _UIA_ElementGetPropertyValue
  320. ; Описание    : Определяет значение заданного свойства элемента
  321. ; Синтаксис   : _UIA_ElementGetPropertyValue($oElement, $vProperty)
  322. ; Параметры   : $oElement  - элемент (объект)
  323. ;             : $vProperty - свойство, значение которого нужно получить
  324. ; Возвращает  : Успех   - значение заданного свойства
  325. ;             : Неудача - 0 и устанавливает @error
  326. ;             :         @error = 1 - первый параметр не является объектом
  327. ;             :         @error = 2 - ошибка преобразования свойства
  328. ;             :         @error = 3 - ошибка выполнения метода
  329. ; Автор       : InnI
  330. ; Примечание  : Название свойства можно скопировать из левой части списка утилиты Inspect
  331. ; ============================================================================================
  332. Func _UIA_ElementGetPropertyValue($oElement, $vProperty)
  333.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementGetPropertyValue : первый параметр не является объектом"), 0)
  334.     $vProperty = __UIA_GetPropIdFromStr($vProperty, "_UIA_ElementGetPropertyValue")
  335.     If $vProperty = -1 Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementGetPropertyValue : ошибка преобразования свойства"), 0)
  336.     Local $vValue, $iErrorCode = $oElement.GetCurrentPropertyValue($vProperty, $vValue)
  337.     If $iErrorCode Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementGetPropertyValue : ошибка выполнения метода (0x" & Hex($iErrorCode) & ")"), 0)
  338.     Return $vValue
  339. EndFunc   ;==>_UIA_ElementGetPropertyValue
  340.  
  341. ; ============================================================================================
  342. ; Имя функции : _UIA_ElementMouseClick
  343. ; Описание    : Выполняет клик мыши по элементу
  344. ; Синтаксис   : _UIA_ElementMouseClick($oElement[, $sButton = ""[, $iX = Default[, $iY = Default[, $iClicks = 1[, $fSetFocus = True]]]]])
  345. ; Параметры   : $oElement - элемент (объект)
  346. ;             : $sButton  - кнопка мыши (по умолчанию левая)
  347. ;             : $iX       - X координата клика (по умолчанию середина ширины элемента)
  348. ;             : $iY       - Y координата клика (по умолчанию середина высоты элемента)
  349. ;             : $iClicks  - количество кликов (по умолчанию 1)
  350. ;             : $SetFocus - активация элемента перед кликом (по умолчанию True)
  351. ; Возвращает  : Успех   - 1
  352. ;             : Неудача - 0 и устанавливает @error
  353. ;             :         @error = 1 - первый параметр не является объектом
  354. ;             :         @error = 2 - ошибка создания массива координат прямоугольной области
  355. ;             :         @error = 3 - координаты клика выходят за пределы элемента
  356. ;             :         @error = 4 - ошибка выполнения функции MouseClick
  357. ; Автор       : InnI
  358. ; Примечание  : Используются экранные координаты относительно левого верхнего угла элемента
  359. ; ============================================================================================
  360. Func _UIA_ElementMouseClick($oElement, $sButton = "", $iX = Default, $iY = Default, $iClicks = 1, $fSetFocus = True)
  361.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementMouseClick : первый параметр не является объектом"), 0)
  362.     If $fSetFocus Then $oElement.SetFocus()
  363.     Local $aRect = _UIA_ElementGetBoundingRectangle($oElement)
  364.     If Not IsArray($aRect) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementMouseClick : ошибка создания массива координат прямоугольной области"), 0)
  365.     If $iX = Default Then $iX = ($aRect[2] - $aRect[0]) / 2
  366.     If $iY = Default Then $iY = ($aRect[3] - $aRect[1]) / 2
  367.     If $iX < 0 Or $iY < 0 Or $iX >= $aRect[2] - $aRect[0] Or $iY >= $aRect[3] - $aRect[1] Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementMouseClick : координаты клика выходят за пределы элемента"), 0)
  368.     Local $iMode = Opt("MouseCoordMode", 1)
  369.     Local $iResult = MouseClick($sButton, $aRect[0] + $iX, $aRect[1] + $iY, $iClicks, 0)
  370.     Opt("MouseCoordMode", $iMode)
  371.     If Not $iResult Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_ElementMouseClick : ошибка выполнения функции MouseClick"), 0)
  372.     Return 1
  373. EndFunc   ;==>_UIA_ElementMouseClick
  374.  
  375. ; ============================================================================================
  376. ; Имя функции : _UIA_ElementScrollIntoView
  377. ; Описание    : Прокручивает элемент в область видимости
  378. ; Синтаксис   : _UIA_ElementScrollIntoView($oElement)
  379. ; Параметры   : $oElement - элемент (объект)
  380. ; Возвращает  : Успех   - 1
  381. ;             : Неудача - 0 и устанавливает @error
  382. ;             :         @error = 1 - параметр не является объектом
  383. ;             :         @error = 2 - ошибка создания объекта на основе шаблона ScrollItem
  384. ;             :         @error = 3 - ошибка выполнения метода
  385. ; Автор       : InnI
  386. ; Примечание  :
  387. ; ============================================================================================
  388. Func _UIA_ElementScrollIntoView($oElement)
  389.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementScrollIntoView : параметр не является объектом"), 0)
  390.     Local $pScrollItem, $oScrollItem
  391.     $oElement.GetCurrentPattern($UIA_ScrollItemPatternId, $pScrollItem)
  392.     $oScrollItem = ObjCreateInterface($pScrollItem, $sIID_IUIAutomationScrollItemPattern, $dtagIUIAutomationScrollItemPattern)
  393.     If Not IsObj($oScrollItem) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementScrollIntoView : ошибка создания объекта на основе шаблона ScrollItem"), 0)
  394.     Local $iErrorCode = $oScrollItem.ScrollIntoView()
  395.     If $iErrorCode Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementScrollIntoView : ошибка выполнения метода (0x" & Hex($iErrorCode) & ")"), 0)
  396.     Return 1
  397. EndFunc   ;==>_UIA_ElementScrollIntoView
  398.  
  399. ; ============================================================================================
  400. ; Имя функции : _UIA_ElementSetFocus
  401. ; Описание    : Устанавливает элементу фокус ввода
  402. ; Синтаксис   : _UIA_ElementSetFocus($oElement)
  403. ; Параметры   : $oElement - элемент (объект)
  404. ; Возвращает  : Успех   - 1
  405. ;             : Неудача - 0 и устанавливает @error
  406. ;             :         @error = 1 - параметр не является объектом
  407. ;             :         @error = 2 - ошибка выполнения метода
  408. ; Автор       : InnI
  409. ; Примечание  : Будет активировано окно, содержащее элемент
  410. ; ============================================================================================
  411. Func _UIA_ElementSetFocus($oElement)
  412.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementSetFocus : параметр не является объектом"), 0)
  413.     Local $iErrorCode = $oElement.SetFocus()
  414.     If $iErrorCode Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementSetFocus : ошибка выполнения метода (0x" & Hex($iErrorCode) & ")"), 0)
  415.     Return 1
  416. EndFunc   ;==>_UIA_ElementSetFocus
  417.  
  418. ; ============================================================================================
  419. ; Имя функции : _UIA_ElementTextSetValue
  420. ; Описание    : Устанавливает значение (текст) в текстовый элемент
  421. ; Синтаксис   : _UIA_ElementTextSetValue($oElement, $sValue)
  422. ; Параметры   : $oElement - элемент (объект)
  423. ;             : $sValue   - новое значение (текст)
  424. ; Возвращает  : Успех   - 1
  425. ;             : Неудача - 0 и устанавливает @error
  426. ;             :         @error = 1 - первый параметр не является объектом
  427. ;             :         @error = 2 - ошибка создания объекта на основе шаблона LegacyIAccessible
  428. ;             :         @error = 3 - ошибка выполнения метода
  429. ; Автор       : InnI
  430. ; Примечание  : Только для текстовых элементов, имеющих шаблон ValuePattern
  431. ; ============================================================================================
  432. Func _UIA_ElementTextSetValue($oElement, $sValue)
  433.     If Not IsObj($oElement) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ElementTextSetValue : первый параметр не является объектом"), 0)
  434.     Local $pIAccess, $oIAccess
  435.     $oElement.GetCurrentPattern($UIA_LegacyIAccessiblePatternId, $pIAccess)
  436.     $oIAccess = ObjCreateInterface($pIAccess, $sIID_IUIAutomationLegacyIAccessiblePattern, $dtagIUIAutomationLegacyIAccessiblePattern)
  437.     If Not IsObj($oIAccess) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_ElementTextSetValue : ошибка создания объекта на основе шаблона LegacyIAccessible"), 0)
  438.     Local $iErrorCode = $oIAccess.SetValue($sValue)
  439.     If $iErrorCode Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_ElementTextSetValue : ошибка выполнения метода (0x" & Hex($iErrorCode) & ")"), 0)
  440.     Return 1
  441. EndFunc   ;==>_UIA_ElementTextSetValue
  442.  
  443. ; ============================================================================================
  444. ; Имя функции : _UIA_FindAllElements
  445. ; Описание    : Находит все элементы, соответствующие заданному свойству и его значению
  446. ; Синтаксис   : _UIA_FindAllElements($oElementFrom[, $vProperty = 0[, $vPropertyValue = ""]])
  447. ; Параметры   : $oElementFrom   - элемент (объект), от которого начинается поиск
  448. ;             : $vProperty      - свойство искомого элемента (по умолчанию 0 - любое)
  449. ;             : $vPropertyValue - значение свойства искомого элемента (по умолчанию пустая строка)
  450. ; Возвращает  : Успех   - массив элементов (объектов)
  451. ;             :         $aArray[0] - количество найденных элементов (N)
  452. ;             :         $aArray[1] - первый найденный элемент (объект)
  453. ;             :         $aArray[2] - второй найденный элемент (объект)
  454. ;             :         $aArray[N] - N-й найденный элемент (объект)
  455. ;             : Неудача - 0 и устанавливает @error
  456. ;             :         @error = 1 - первый параметр не является объектом
  457. ;             :         @error = 2 - ошибка преобразования свойства
  458. ;             :         @error = 3 - ошибка создания условия поиска (см. примечание о типизации)
  459. ;             :         @error = 4 - ошибка создания массива элементов (объектов)
  460. ; Автор       : InnI
  461. ; Примечание  : Поиск производится от указанного элемента по его дереву и всем поддеревьям
  462. ;             : Сам элемент, от которого производится поиск, в результат не включается
  463. ;             : При поиске любых элементов ($vProperty = 0) значение свойства не учитывается
  464. ;             : Название свойства можно скопировать из левой части списка утилиты Inspect
  465. ;             : Значение свойства можно скопировать из правой части списка утилиты Inspect
  466. ;             : Значения свойств типизированы. Например, для свойства "IsEnabled" нужно указывать значение True, а не 1 и не "True"
  467. ; ============================================================================================
  468. Func _UIA_FindAllElements($oElementFrom, $vProperty = 0, $vPropertyValue = "")
  469.     If Not IsObj($oElementFrom) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_FindAllElements : первый параметр не является объектом"), 0)
  470.     Local $oCondition
  471.     If Not $vProperty Then
  472.         $oCondition = Default
  473.     Else
  474.         $vProperty = __UIA_GetPropIdFromStr($vProperty, "_UIA_FindAllElements")
  475.         If $vProperty = -1 Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_FindAllElements : ошибка преобразования свойства"), 0)
  476.         $oCondition = _UIA_CreatePropertyCondition($vProperty, $vPropertyValue)
  477.         If Not IsObj($oCondition) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_FindAllElements : ошибка создания условия поиска (см. примечание о типизации)"), 0)
  478.     EndIf
  479.     Local $aElements = _UIA_FindAllElementsEx($oElementFrom, $oCondition)
  480.     If Not IsArray($aElements) Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_FindAllElements : ошибка создания массива элементов (объектов)"), 0)
  481.     Return $aElements
  482. EndFunc   ;==>_UIA_FindAllElements
  483.  
  484. ; ============================================================================================
  485. ; Имя функции : _UIA_FindAllElementsEx
  486. ; Описание    : Находит все элементы, соответствующие условию поиска
  487. ; Синтаксис   : _UIA_FindAllElementsEx($oElementFrom[, $oCondition = Default[, $iTreeScope = Default]])
  488. ; Параметры   : $oElementFrom - элемент (объект), от которого начинается поиск
  489. ;             : $oCondition   - условие поиска (по умолчанию любое)
  490. ;             : $iTreeScope   - область поиска:
  491. ;             :               $TreeScope_Element - включает только сам элемент
  492. ;             :               $TreeScope_Children - включает только дочерние элементы
  493. ;             :               $TreeScope_Descendants - включает всех потомков элемента (по умолчанию)
  494. ;             :               $TreeScope_Subtree - включает сам элемент и всех потомков
  495. ; Возвращает  : Успех   - массив элементов (объектов)
  496. ;             :         $aArray[0] - количество найденных элементов (N)
  497. ;             :         $aArray[1] - первый найденный элемент (объект)
  498. ;             :         $aArray[2] - второй найденный элемент (объект)
  499. ;             :         $aArray[N] - N-й найденный элемент (объект)
  500. ;             : Неудача - 0 и устанавливает @error
  501. ;             :         @error = 1 - первый параметр не является объектом
  502. ;             :         @error = 2 - условие поиска не определено
  503. ;             :         @error = 3 - ошибка создания объекта массива
  504. ;             :         @error = 4 - ошибка создания массива элементов (объектов)
  505. ; Автор       : InnI
  506. ; Примечание  : Области поиска $TreeScope_Parent и $TreeScope_Ancestors не поддерживаются
  507. ; ============================================================================================
  508. Func _UIA_FindAllElementsEx($oElementFrom, $oCondition = Default, $iTreeScope = Default)
  509.     If Not IsObj($oElementFrom) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_FindAllElementsEx : первый параметр не является объектом"), 0)
  510.     If $oCondition = Default Then
  511.         Local $pCondition, $oUIAutomation = _UIA_ObjectCreate()
  512.         $oUIAutomation.CreateTrueCondition($pCondition)
  513.         $oCondition = ObjCreateInterface($pCondition, $sIID_IUIAutomationBoolCondition, $dtagIUIAutomationBoolCondition)
  514.     EndIf
  515.     If Not IsObj($oCondition) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_FindAllElementsEx : условие поиска не определено"), 0)
  516.     If $iTreeScope = Default Then $iTreeScope = $TreeScope_Descendants
  517.     Local $pUIElementArray, $oUIElementArray, $pUIElement, $iElements
  518.     $oElementFrom.FindAll($iTreeScope, $oCondition, $pUIElementArray)
  519.     $oUIElementArray = ObjCreateInterface($pUIElementArray, $sIID_IUIAutomationElementArray, $dtagIUIAutomationElementArray)
  520.     If Not IsObj($oUIElementArray) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_FindAllElementsEx : ошибка создания объекта массива"), 0)
  521.     $oUIElementArray.Length($iElements)
  522.     If Not $iElements Then
  523.         Local $aElements[1] = [0]
  524.         Return $aElements
  525.     EndIf
  526.     Local $aElements[$iElements + 1]
  527.     $aElements[0] = $iElements
  528.     For $i = 1 To $iElements
  529.         $oUIElementArray.GetElement($i - 1, $pUIElement)
  530.         $aElements[$i] = __UIA_CreateElement($pUIElement)
  531.         $pUIElement = 0
  532.     Next
  533.     If Not IsArray($aElements) Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_FindAllElementsEx : ошибка создания массива элементов (объектов)"), 0)
  534.     Return $aElements
  535. EndFunc   ;==>_UIA_FindAllElementsEx
  536.  
  537. ; ============================================================================================
  538. ; Имя функции : _UIA_FindElementsInArray
  539. ; Описание    : Находит все элементы, соответствующие заданному свойству и его значению
  540. ; Синтаксис   : _UIA_FindElementsInArray(Const ByRef $aElements, $vProperty, $vPropertyValue[, $fInStr = False[, $fIndexArray = False]])
  541. ; Параметры   : $aElements      - массив элементов (объектов)
  542. ;             : $vProperty      - свойство искомого элемента
  543. ;             : $vPropertyValue - значение свойства искомого элемента
  544. ;             : $fInStr         - полное совпадение значения свойства (по умолчанию) или частичное
  545. ;             : $fIndexArray    - элементами массива являются объекты (по умолчанию) или индексы элементов исходного массива
  546. ; Возвращает  : Успех   - массив элементов (объектов)
  547. ;             :         $aArray[0] - количество найденных элементов (N)
  548. ;             :         $aArray[1] - первый найденный элемент (объект)
  549. ;             :         $aArray[2] - второй найденный элемент (объект)
  550. ;             :         $aArray[N] - N-й найденный элемент (объект)
  551. ;             : Неудача - 0 и устанавливает @error
  552. ;             :         @error = 1 - первый параметр не является массивом
  553. ;             :         @error = 2 - пустой массив
  554. ;             :         @error = 3 - многомерный массив
  555. ;             :         @error = 4 - элемент массива [0] не соответствует количеству остальных элементов
  556. ;             :         @error = 5 - массив не содержит элементов
  557. ;             :         @error = 6 - элемент массива [индекс] не является объектом
  558. ;             :         @error = 7 - ошибка преобразования свойства
  559. ; Автор       : InnI
  560. ; Примечание  : Элемент массива с нулевым индексом должен содержать количество объектов
  561. ;             : Название свойства можно скопировать из левой части списка утилиты Inspect
  562. ;             : Значение свойства можно скопировать из правой части списка утилиты Inspect
  563. ; ============================================================================================
  564. Func _UIA_FindElementsInArray(Const ByRef $aElements, $vProperty, $vPropertyValue, $fInStr = False, $fIndexArray = False)
  565.     If Not IsArray($aElements) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_FindElementsInArray : первый параметр не является массивом"), 0)
  566.     If Not UBound($aElements) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_FindElementsInArray : пустой массив"), 0)
  567.     If UBound($aElements, 0) > 1 Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_FindElementsInArray : многомерный массив"), 0)
  568.     If $aElements[0] <> UBound($aElements) - 1 Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_FindElementsInArray : элемент массива [0] не соответствует количеству остальных элементов"), 0)
  569.     If Not $aElements[0] Then Return SetError(5, __UIA_ConsoleWriteError("_UIA_FindElementsInArray : массив не содержит элементов"), 0)
  570.     For $i = 1 To $aElements[0]
  571.         If Not IsObj($aElements[$i]) Then Return SetError(6, __UIA_ConsoleWriteError("_UIA_FindElementsInArray : элемент массива [" & $i & "] не является объектом"), 0)
  572.     Next
  573.     $vProperty = __UIA_GetPropIdFromStr($vProperty, "_UIA_FindElementsInArray")
  574.     If $vProperty = -1 Then Return SetError(7, __UIA_ConsoleWriteError("_UIA_FindElementsInArray : ошибка преобразования свойства"), 0)
  575.     Local $vValue, $aArray[$aElements[0] + 1], $j = 1
  576.     For $i = 1 To $aElements[0]
  577.         $aElements[$i].GetCurrentPropertyValue($vProperty, $vValue)
  578.         If $fInStr Then
  579.             If StringInStr($vValue, $vPropertyValue) Then
  580.                 If $fIndexArray Then
  581.                     $aArray[$j] = $i
  582.                 Else
  583.                     $aArray[$j] = $aElements[$i]
  584.                 EndIf
  585.                 $j += 1
  586.             EndIf
  587.         Else
  588.             If $vPropertyValue = $vValue Then
  589.                 If $fIndexArray Then
  590.                     $aArray[$j] = $i
  591.                 Else
  592.                     $aArray[$j] = $aElements[$i]
  593.                 EndIf
  594.                 $j += 1
  595.             EndIf
  596.         EndIf
  597.         $vValue = 0
  598.     Next
  599.     ReDim $aArray[$j]
  600.     $aArray[0] = $j - 1
  601.     Return $aArray
  602. EndFunc   ;==>_UIA_FindElementsInArray
  603.  
  604. ; ============================================================================================
  605. ; Имя функции : _UIA_GetControlTypeElement
  606. ; Описание    : Находит элемент (объект) указанного типа с заданным свойством и значением
  607. ; Синтаксис   : _UIA_GetControlTypeElement($oElementFrom, $vControlType, $vPropertyValue[, $vProperty = Default[, $fInStr = False]])
  608. ; Параметры   : $oElementFrom   - элемент (объект), от которого начинается поиск
  609. ;             : $vControlType   - идентификатор типа искомого элемента
  610. ;             : $vPropertyValue - значение свойства искомого элемента
  611. ;             : $vProperty      - свойство искомого элемента (по умолчанию "Name" - $UIA_NamePropertyId)
  612. ;             : $fInStr         - полное совпадение значения свойства (по умолчанию) или частичное
  613. ; Возвращает  : Успех   - элемент (объект)
  614. ;             : Неудача - 0 и устанавливает @error
  615. ;             :         @error = 1 - первый параметр не является объектом
  616. ;             :         @error = 2 - ошибка преобразования типа
  617. ;             :         @error = 3 - ошибка преобразования свойства
  618. ;             :         @error = 4 - ошибка создания массива элементов (объектов)
  619. ;             :         @error = 5 - элементы указанного типа не найдены
  620. ;             :         @error = 6 - значение указанного свойства найденных элементов не соответствует заданному
  621. ; Автор       : InnI
  622. ; Примечание  : Поиск производится от указанного элемента по его дереву и всем поддеревьям
  623. ;             : Идентификатор типа можно скопировать из значения свойства "ControlType" утилиты Inspect
  624. ;             : Название свойства можно скопировать из левой части списка утилиты Inspect
  625. ;             : Значение свойства можно скопировать из правой части списка утилиты Inspect
  626. ; ============================================================================================
  627. Func _UIA_GetControlTypeElement($oElementFrom, $vControlType, $vPropertyValue, $vProperty = Default, $fInStr = False)
  628.     If Not IsObj($oElementFrom) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_GetControlTypeElement : первый параметр не является объектом"), 0)
  629.     $vControlType = __UIA_GetTypeIdFromStr($vControlType, "_UIA_GetControlTypeElement")
  630.     If $vControlType = -1 Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_GetControlTypeElement : ошибка преобразования типа"), 0)
  631.     If $vProperty = Default Then
  632.         $vProperty = $UIA_NamePropertyId
  633.     Else
  634.         $vProperty = __UIA_GetPropIdFromStr($vProperty, "_UIA_GetControlTypeElement")
  635.         If $vProperty = -1 Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_GetControlTypeElement : ошибка преобразования свойства"), 0)
  636.     EndIf
  637.     Local $aElements = _UIA_FindAllElements($oElementFrom, $UIA_ControlTypePropertyId, $vControlType)
  638.     If Not IsArray($aElements) Then Return SetError(4, __UIA_ConsoleWriteError("_UIA_GetControlTypeElement : ошибка создания массива элементов (объектов)"), 0)
  639.     If Not $aElements[0] Then Return SetError(5, __UIA_ConsoleWriteError("_UIA_GetControlTypeElement : элементы указанного типа не найдены"), 0)
  640.     Local $vValue
  641.     For $i = 1 To $aElements[0]
  642.         $aElements[$i].GetCurrentPropertyValue($vProperty, $vValue)
  643.         If $fInStr Then
  644.             If StringInStr($vValue, $vPropertyValue) Then ExitLoop
  645.         Else
  646.             If $vPropertyValue = $vValue Then ExitLoop
  647.         EndIf
  648.         $vValue = 0
  649.     Next
  650.     If $i = $aElements[0] + 1 Then Return SetError(6, __UIA_ConsoleWriteError("_UIA_GetControlTypeElement : значение указанного свойства найденных элементов не соответствует заданному"), 0)
  651.     Return $aElements[$i]
  652. EndFunc   ;==>_UIA_GetControlTypeElement
  653.  
  654. ; ============================================================================================
  655. ; Имя функции : _UIA_GetElementFromCondition
  656. ; Описание    : Находит элемент (объект) на основе заданного условия
  657. ; Синтаксис   : _UIA_GetElementFromCondition($oElementFrom, $oCondition[, $iTreeScope = Default])
  658. ; Параметры   : $oElementFrom - элемент (объект), от которого начинается поиск
  659. ;             : $oCondition   - условие поиска
  660. ;             : $iTreeScope   - область поиска:
  661. ;             :               $TreeScope_Element - включает только сам элемент
  662. ;             :               $TreeScope_Children - включает только дочерние элементы
  663. ;             :               $TreeScope_Descendants - включает всех потомков элемента (по умолчанию)
  664. ;             :               $TreeScope_Subtree - включает сам элемент и всех потомков
  665. ; Возвращает  : Успех   - элемент (объект)
  666. ;             : Неудача - 0 и устанавливает @error
  667. ;             :         @error = 1 - первый параметр не является объектом
  668. ;             :         @error = 2 - условие поиска не определено
  669. ;             :         @error = 3 - ошибка выполнения метода
  670. ; Автор       : InnI
  671. ; Примечание  : Если элемент не найден, то функция вернёт НЕ объект
  672. ;             : Области поиска $TreeScope_Parent и $TreeScope_Ancestors не поддерживаются
  673. ; ============================================================================================
  674. Func _UIA_GetElementFromCondition($oElementFrom, $oCondition, $iTreeScope = Default)
  675.     If Not IsObj($oElementFrom) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_GetElementFromCondition : первый параметр не является объектом"), 0)
  676.     If Not IsObj($oCondition) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_GetElementFromCondition : условие поиска не определено"), 0)
  677.     If $iTreeScope = Default Then $iTreeScope = $TreeScope_Descendants
  678.     Local $pUIElement, $iErrorCode = $oElementFrom.FindFirst($iTreeScope, $oCondition, $pUIElement)
  679.     If $iErrorCode Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_GetElementFromCondition : ошибка выполнения метода (0x" & Hex($iErrorCode) & ")"), 0)
  680.     Return __UIA_CreateElement($pUIElement)
  681. EndFunc   ;==>_UIA_GetElementFromCondition
  682.  
  683. ; ============================================================================================
  684. ; Имя функции : _UIA_GetElementFromFocus
  685. ; Описание    : Создаёт элемент (объект) на основе фокуса ввода
  686. ; Синтаксис   : _UIA_GetElementFromFocus()
  687. ; Параметры   :
  688. ; Возвращает  : Успех   - элемент (объект)
  689. ;             : Неудача - 0 и устанавливает @error
  690. ;             :         @error = 1 - ошибка создания объекта UIAutomation
  691. ;             :         @error = 2 - ошибка создания элемента (объекта)
  692. ; Автор       : InnI
  693. ; Примечание  :
  694. ; ============================================================================================
  695. Func _UIA_GetElementFromFocus()
  696.     Local $pElement, $oElement, $oUIAutomation = _UIA_ObjectCreate()
  697.     If @error Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_GetElementFromFocus : ошибка создания объекта UIAutomation"), 0)
  698.     $oUIAutomation.GetFocusedElement($pElement)
  699.     $oElement = __UIA_CreateElement($pElement)
  700.     $pElement = 0
  701.     If Not IsObj($oElement) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_GetElementFromFocus : ошибка создания элемента (объекта)"), 0)
  702.     Return $oElement
  703. EndFunc   ;==>_UIA_GetElementFromFocus
  704.  
  705. ; ============================================================================================
  706. ; Имя функции : _UIA_GetElementFromHandle
  707. ; Описание    : Создаёт элемент (объект) на основе дескриптора
  708. ; Синтаксис   : _UIA_GetElementFromHandle($hHandle)
  709. ; Параметры   : $hHandle - дескриптор окна или контрола
  710. ; Возвращает  : Успех   - элемент (объект)
  711. ;             : Неудача - 0 и устанавливает @error
  712. ;             :         @error = 1 - параметр не является дескриптором
  713. ;             :         @error = 2 - ошибка создания объекта UIAutomation
  714. ;             :         @error = 3 - ошибка создания элемента (объекта)
  715. ; Автор       : InnI
  716. ; Примечание  :
  717. ; ============================================================================================
  718. Func _UIA_GetElementFromHandle($hHandle)
  719.     If Not IsHWnd($hHandle) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_GetElementFromHandle : параметр не является дескриптором"), 0)
  720.     Local $pElement, $oElement, $oUIAutomation = _UIA_ObjectCreate()
  721.     If @error Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_GetElementFromHandle : ошибка создания объекта UIAutomation"), 0)
  722.     $oUIAutomation.ElementFromHandle($hHandle, $pElement)
  723.     $oElement = __UIA_CreateElement($pElement)
  724.     $pElement = 0
  725.     If Not IsObj($oElement) Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_GetElementFromHandle : ошибка создания элемента (объекта)"), 0)
  726.     Return $oElement
  727. EndFunc   ;==>_UIA_GetElementFromHandle
  728.  
  729. ; ============================================================================================
  730. ; Имя функции : _UIA_GetElementFromPoint
  731. ; Описание    : Создаёт элемент (объект) на основе экранных координат
  732. ; Синтаксис   : _UIA_GetElementFromPoint($iX = Default, $iY = Default)
  733. ; Параметры   : $iX - X координата экрана (по умолчанию - курсора мыши)
  734. ;             : $iY - Y координата экрана (по умолчанию - курсора мыши)
  735. ; Возвращает  : Успех   - элемент (объект)
  736. ;             : Неудача - 0 и устанавливает @error
  737. ;             :         @error = 1 - ошибка создания объекта UIAutomation
  738. ;             :         @error = 2 - ошибка создания элемента (объекта)
  739. ; Автор       : InnI
  740. ; Примечание  :
  741. ; ============================================================================================
  742. Func _UIA_GetElementFromPoint($iX = Default, $iY = Default)
  743.     Local $pElement, $oElement, $tPoint = DllStructCreate("long X;long Y"), $oUIAutomation = _UIA_ObjectCreate()
  744.     If @error Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_GetElementFromPoint : ошибка создания объекта UIAutomation"), 0)
  745.     Local $iMode = Opt("MouseCoordMode", 1)
  746.     $tPoint.X = ($iX = Default) ? MouseGetPos(0) : $iX
  747.     $tPoint.Y = ($iY = Default) ? MouseGetPos(1) : $iY
  748.     Opt("MouseCoordMode", $iMode)
  749.     $oUIAutomation.ElementFromPoint($tPoint, $pElement)
  750.     $oElement = __UIA_CreateElement($pElement)
  751.     $pElement = 0
  752.     If Not IsObj($oElement) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_GetElementFromPoint : ошибка создания элемента (объекта)"), 0)
  753.     Return $oElement
  754. EndFunc   ;==>_UIA_GetElementFromPoint
  755.  
  756. ; ============================================================================================
  757. ; Имя функции : _UIA_ObjectCreate
  758. ; Описание    : Создаёт объект UIAutomation
  759. ; Синтаксис   : _UIA_ObjectCreate()
  760. ; Параметры   :
  761. ; Возвращает  : Успех   - объект UIAutomation
  762. ;             : Неудача - 0 и устанавливает @error
  763. ;             :         @error = 1 - ошибка создания объекта UIAutomation
  764. ;             :         @error = 2 - неизвестная версия элемента
  765. ; Автор       : InnI
  766. ; Примечание  :
  767. ; ============================================================================================
  768. Func _UIA_ObjectCreate()
  769.     Local $oUIAutomation
  770.     Switch $UIA_ElementVersion
  771.         Case 0
  772.             For $i = 4 To 2 Step -1
  773.                 $oUIAutomation = ObjCreateInterface($sCLSID_CUIAutomation8, Eval("sIID_IUIAutomation" & $i), Eval("dtagIUIAutomation" & $i))
  774.                 If IsObj($oUIAutomation) Then Return $oUIAutomation
  775.             Next
  776.             ContinueCase
  777.         Case 1
  778.             $oUIAutomation = ObjCreateInterface($sCLSID_CUIAutomation, $sIID_IUIAutomation, $dtagIUIAutomation)
  779.         Case 2
  780.             $oUIAutomation = ObjCreateInterface($sCLSID_CUIAutomation8, $sIID_IUIAutomation2, $dtagIUIAutomation2)
  781.         Case 3 To 5
  782.             $oUIAutomation = ObjCreateInterface($sCLSID_CUIAutomation8, $sIID_IUIAutomation3, $dtagIUIAutomation3)
  783.         Case 6 To 7
  784.             $oUIAutomation = ObjCreateInterface($sCLSID_CUIAutomation8, $sIID_IUIAutomation4, $dtagIUIAutomation4)
  785.         Case Else
  786.             Return SetError(2, __UIA_ConsoleWriteError("_UIA_ObjectCreate : неизвестная версия элемента (" & $UIA_ElementVersion & ")"), 0)
  787.     EndSwitch
  788.     If Not IsObj($oUIAutomation) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_ObjectCreate : ошибка создания объекта UIAutomation"), 0)
  789.     Return $oUIAutomation
  790. EndFunc   ;==>_UIA_ObjectCreate
  791.  
  792. ; ============================================================================================
  793. ; Имя функции : _UIA_WaitControlTypeElement
  794. ; Описание    : Ожидает элемент (объект) указанного типа с заданным свойством и значением
  795. ; Синтаксис   : _UIA_WaitControlTypeElement($oElementFrom, $vControlType, $vPropertyValue[, $vProperty = Default[, $fInStr = False[, $iWaitTime = Default]]])
  796. ; Параметры   : $oElementFrom   - элемент (объект), от которого начинается поиск
  797. ;             : $vControlType   - идентификатор типа ожидаемого элемента
  798. ;             : $vPropertyValue - значение свойства ожидаемого элемента
  799. ;             : $vProperty      - свойство ожидаемого элемента (по умолчанию "Name" - $UIA_NamePropertyId)
  800. ;             : $fInStr         - полное совпадение значения свойства (по умолчанию) или частичное
  801. ;             : $iWaitTime      - время ожидания в секундах (по умолчанию $UIA_DefaultWaitTime, 0 - бесконечно)
  802. ; Возвращает  : Успех   - элемент (объект)
  803. ;             : Неудача - 0 и устанавливает @error
  804. ;             :         @error = 1 - первый параметр не является объектом
  805. ;             :         @error = 2 - ошибка преобразования типа
  806. ;             :         @error = 3 - ошибка преобразования свойства
  807. ;             :         @error = 4 - превышено время ожидания
  808. ; Автор       : InnI
  809. ; Примечание  : Поиск производится от указанного элемента по его дереву и всем поддеревьям
  810. ;             : Идентификатор типа можно скопировать из значения свойства "ControlType" утилиты Inspect
  811. ;             : Название свойства можно скопировать из левой части списка утилиты Inspect
  812. ;             : Значение свойства можно скопировать из правой части списка утилиты Inspect
  813. ; ============================================================================================
  814. Func _UIA_WaitControlTypeElement($oElementFrom, $vControlType, $vPropertyValue, $vProperty = Default, $fInStr = False, $iWaitTime = Default)
  815.     If Not IsObj($oElementFrom) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_WaitControlTypeElement : первый параметр не является объектом"), 0)
  816.     $vControlType = __UIA_GetTypeIdFromStr($vControlType, "_UIA_WaitControlTypeElement")
  817.     If $vControlType = -1 Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_WaitControlTypeElement : ошибка преобразования типа"), 0)
  818.     If $vProperty = Default Then
  819.         $vProperty = $UIA_NamePropertyId
  820.     Else
  821.         $vProperty = __UIA_GetPropIdFromStr($vProperty, "_UIA_WaitControlTypeElement")
  822.         If $vProperty = -1 Then Return SetError(3, __UIA_ConsoleWriteError("_UIA_WaitControlTypeElement : ошибка преобразования свойства"), 0)
  823.     EndIf
  824.     If $iWaitTime = Default Then $iWaitTime = $UIA_DefaultWaitTime
  825.     Local $oElement, $iOption = $UIA_ConsoleWriteError, $iTimer = TimerInit()
  826.     $UIA_ConsoleWriteError = 0
  827.     Do
  828.         $oElement = _UIA_GetControlTypeElement($oElementFrom, $vControlType, $vPropertyValue, $vProperty, $fInStr)
  829.         If IsObj($oElement) Then
  830.             $UIA_ConsoleWriteError = $iOption
  831.             Return $oElement
  832.         EndIf
  833.         If $iWaitTime > 0 And TimerDiff($iTimer) > $iWaitTime * 1000 Then
  834.             $UIA_ConsoleWriteError = $iOption
  835.             Return SetError(4, __UIA_ConsoleWriteError("_UIA_WaitControlTypeElement : превышено время ожидания"), 0)
  836.         EndIf
  837.         Sleep(100)
  838.     Until 0
  839. EndFunc   ;==>_UIA_WaitControlTypeElement
  840.  
  841. ; ============================================================================================
  842. ; Имя функции : _UIA_WaitElementFromCondition
  843. ; Описание    : Ожидает элемент (объект) на основе заданного условия
  844. ; Синтаксис   : _UIA_WaitElementFromCondition($oElementFrom, $oCondition[, $iTreeScope = Default[, $iWaitTime = Default]])
  845. ; Параметры   : $oElementFrom - элемент (объект), от которого начинается поиск
  846. ;             : $oCondition   - условие поиска
  847. ;             : $iTreeScope   - область поиска:
  848. ;             :               $TreeScope_Element - включает только сам элемент
  849. ;             :               $TreeScope_Children - включает только дочерние элементы
  850. ;             :               $TreeScope_Descendants - включает всех потомков элемента (по умолчанию)
  851. ;             :               $TreeScope_Subtree - включает сам элемент и всех потомков
  852. ;             : $iWaitTime    - время ожидания в секундах (по умолчанию $UIA_DefaultWaitTime, 0 - бесконечно)
  853. ; Возвращает  : Успех   - элемент (объект)
  854. ;             : Неудача - 0 и устанавливает @error
  855. ;             :         @error = 1 - первый параметр не является объектом
  856. ;             :         @error = 2 - условие поиска не определено
  857. ;             :         @error = 3 - превышено время ожидания
  858. ; Автор       : InnI
  859. ; Примечание  : Области поиска $TreeScope_Parent и $TreeScope_Ancestors не поддерживаются
  860. ; ============================================================================================
  861. Func _UIA_WaitElementFromCondition($oElementFrom, $oCondition, $iTreeScope = Default, $iWaitTime = Default)
  862.     If Not IsObj($oElementFrom) Then Return SetError(1, __UIA_ConsoleWriteError("_UIA_WaitElementFromCondition : первый параметр не является объектом"), 0)
  863.     If Not IsObj($oCondition) Then Return SetError(2, __UIA_ConsoleWriteError("_UIA_WaitElementFromCondition : условие поиска не определено"), 0)
  864.     If $iTreeScope = Default Then $iTreeScope = $TreeScope_Descendants
  865.     If $iWaitTime = Default Then $iWaitTime = $UIA_DefaultWaitTime
  866.     Local $oElement, $iOption = $UIA_ConsoleWriteError, $iTimer = TimerInit()
  867.     $UIA_ConsoleWriteError = 0
  868.     Do
  869.         $oElement = _UIA_GetElementFromCondition($oElementFrom, $oCondition, $iTreeScope)
  870.         If IsObj($oElement) Then
  871.             $UIA_ConsoleWriteError = $iOption
  872.             Return $oElement
  873.         EndIf
  874.         If $iWaitTime > 0 And TimerDiff($iTimer) > $iWaitTime * 1000 Then
  875.             $UIA_ConsoleWriteError = $iOption
  876.             Return SetError(3, __UIA_ConsoleWriteError("_UIA_WaitElementFromCondition : превышено время ожидания"), 0)
  877.         EndIf
  878.         Sleep(100)
  879.     Until 0
  880. EndFunc   ;==>_UIA_WaitElementFromCondition
  881.  
  882. ; ============================================================================================
  883. ; Для внутреннего использования
  884. ; ============================================================================================
  885. ; Имя функции : __UIA_ConsoleWriteError
  886. ; Описание    : Выводит описания ошибок в консоль
  887. ; Синтаксис   : __UIA_ConsoleWriteError($sString)
  888. ; Параметры   : $sString - строка с описанием ошибки
  889. ; Возвращает  : Ничего
  890. ; Автор       : InnI
  891. ; Примечание  :
  892. ; ============================================================================================
  893. Func __UIA_ConsoleWriteError($sString)
  894.     If $UIA_ConsoleWriteError Then ConsoleWrite("!> " & $sString & @CRLF)
  895. EndFunc   ;==>__UIA_ConsoleWriteError
  896.  
  897. ; ============================================================================================
  898. ; Имя функции : __UIA_CreateElement
  899. ; Описание    : Создаёт элемент (объект)
  900. ; Синтаксис   : __UIA_CreateElement($pElement)
  901. ; Параметры   : $pElement - указатель на элемент
  902. ; Возвращает  : Успех   - элемент (объект)
  903. ;             : Неудача - 0
  904. ; Автор       : InnI
  905. ; Примечание  :
  906. ; ============================================================================================
  907. Func __UIA_CreateElement($pElement)
  908.     If Not $pElement Then Return 0
  909.     Local $oElement, $Ver = ($UIA_ElementVersion = 1) ? "" : $UIA_ElementVersion
  910.     If $UIA_ElementVersion Then
  911.         Return ObjCreateInterface($pElement, Eval("sIID_IUIAutomationElement" & $Ver), Eval("dtagIUIAutomationElement" & $Ver))
  912.     Else
  913.         For $i = 7 To 2 Step -1
  914.             $oElement = ObjCreateInterface($pElement, Eval("sIID_IUIAutomationElement" & $i), Eval("dtagIUIAutomationElement" & $i))
  915.             If IsObj($oElement) Then Return $oElement
  916.         Next
  917.         Return ObjCreateInterface($pElement, $sIID_IUIAutomationElement, $dtagIUIAutomationElement)
  918.     EndIf
  919. EndFunc   ;==>__UIA_CreateElement
  920.  
  921. ; ============================================================================================
  922. ; Имя функции : __UIA_GetPropIdFromStr
  923. ; Описание    : Преобразует отображаемое в утилите Inspect свойство в его числовой идентификатор
  924. ; Синтаксис   : __UIA_GetPropIdFromStr($sString[, $sFuncName = ""])
  925. ; Параметры   : $sString   - строка, отображаемая в левой части списка утилиты Inspect
  926. ;             : $sFuncName - имя вызывающей функции
  927. ; Возвращает  : Успех   - числовой идентификатор свойства
  928. ;             : Неудача - -1 и устанавливает @error
  929. ;             :         @error = 1 - ошибка преобразования строки в идентификатор свойства
  930. ;             :         @error = 2 - неизвестный идентификатор свойства
  931. ; Автор       : InnI
  932. ; Примечание  :
  933. ; ============================================================================================
  934. Func __UIA_GetPropIdFromStr($sString, $sFuncName = "")
  935.     Local $iPropertyID, $sStr = StringReplace(StringRegExpReplace($sString, "[\.:\h]", ""), "property", "")
  936.     If Int($sStr) Then
  937.         $iPropertyID = Int($sStr)
  938.     Else
  939.         $iPropertyID = Eval("UIA_" & $sStr & "PropertyID")
  940.         If @error Then Return SetError(1, __UIA_ConsoleWriteError($sFuncName & ' : ошибка преобразования строки "' & $sString & '" в идентификатор свойства'), -1)
  941.     EndIf
  942.     If $iPropertyID < 30000 Or $iPropertyID > 30167 Then
  943.         Return SetError(2, __UIA_ConsoleWriteError($sFuncName & " : неизвестный идентификатор свойства (" & $iPropertyID & ")"), -1)
  944.     Else
  945.         Return $iPropertyID
  946.     EndIf
  947. EndFunc   ;==>__UIA_GetPropIdFromStr
  948.  
  949. ; ============================================================================================
  950. ; Имя функции : __UIA_GetTypeIdFromStr
  951. ; Описание    : Преобразует отображаемое в утилите Inspect значение свойства ControlType в числовой идентификатор
  952. ; Синтаксис   : __UIA_GetTypeIdFromStr($sString[, $sFuncName = ""])
  953. ; Параметры   : $sString - строка, отображаемая в значении свойства ControlType утилиты Inspect
  954. ;             : $sFuncName - имя вызывающей функции
  955. ; Возвращает  : Успех   - числовой идентификатор типа
  956. ;             : Неудача - -1 и устанавливает @error
  957. ;             :         @error = 1 - ошибка преобразования строки в идентификатор типа
  958. ;             :         @error = 2 - неизвестный идентификатор типа
  959. ; Автор       : InnI
  960. ; Примечание  :
  961. ; ============================================================================================
  962. Func __UIA_GetTypeIdFromStr($sString, $sFuncName = "")
  963.     Local $iControlTypeID, $sStr = StringRegExpReplace($sString, "[\)\(\h]", "")
  964.     If Int($sStr) Then
  965.         $iControlTypeID = Int($sStr)
  966.     Else
  967.         $sStr = StringRegExp($sStr, "(?i)uia_.+typeid", 1)
  968.         If IsArray($sStr) And IsDeclared($sStr[0]) Then
  969.             $iControlTypeID = Eval($sStr[0])
  970.         Else
  971.             Return SetError(1, __UIA_ConsoleWriteError($sFuncName & ' : ошибка преобразования строки "' & $sString & '" в идентификатор типа'), -1)
  972.         EndIf
  973.     EndIf
  974.     If $iControlTypeID < 50000 Or $iControlTypeID > 50040 Then
  975.         Return SetError(2, __UIA_ConsoleWriteError($sFuncName & " : неизвестный идентификатор типа (" & $iControlTypeID & ")"), -1)
  976.     Else
  977.         Return $iControlTypeID
  978.     EndIf
  979. EndFunc   ;==>__UIA_GetTypeIdFromStr
  980.  
  981. ; #ДАННЫЕ_ДЛЯ_SCITE# =========================================================================
  982. ; Всплывающий список функций (файл au3.user.calltips.api)
  983. #cs
  984. _UIA_CreateLogicalCondition($oCondition1[, $sOperator = "NOT"[, $oCondition2 = 0]]) Создаёт логическое условие на основе заданных условий (Требуется: #include <UIAutomation.au3>)
  985. _UIA_CreatePropertyCondition($vProperty, $vPropertyValue) Создаёт условие на основе свойства и его значения (Требуется: #include <UIAutomation.au3>)
  986. _UIA_ElementDoDefaultAction($oElement) Выполнение элементом действия по умолчанию (Требуется: #include <UIAutomation.au3>)
  987. _UIA_ElementFindInArray(Const ByRef $aElements, $vProperty, $vPropertyValue[, $fInStr = False[, $iStartIndex = 1[, $fToEnd = True]]]) Находит элемент, соответствующий заданному свойству и его значению (Требуется: #include <UIAutomation.au3>)
  988. _UIA_ElementGetBoundingRectangle($oElement) Определяет прямоугольную область, ограничивающую элемент (Требуется: #include <UIAutomation.au3>)
  989. _UIA_ElementGetFirstLastChild($oElement) Находит первый и последний дочерние элементы (объекты) указанного элемента (Требуется: #include <UIAutomation.au3>)
  990. _UIA_ElementGetParent($oElement) Определяет родительский элемент (объект) указанного элемента (Требуется: #include <UIAutomation.au3>)
  991. _UIA_ElementGetPreviousNext($oElement) Находит предыдущий и следующий элементы (объекты) того же уровня (Требуется: #include <UIAutomation.au3>)
  992. _UIA_ElementGetPropertyValue($oElement, $vProperty) Определяет значение заданного свойства элемента (Требуется: #include <UIAutomation.au3>)
  993. _UIA_ElementMouseClick($oElement[, $sButton = ""[, $iX = Default[, $iY = Default[, $iClicks = 1[, $fSetFocus = True]]]]]) Выполняет клик мыши по элементу (Требуется: #include <UIAutomation.au3>)
  994. _UIA_ElementScrollIntoView($oElement) Прокручивает элемент в область видимости (Требуется: #include <UIAutomation.au3>)
  995. _UIA_ElementSetFocus($oElement) Устанавливает элементу фокус ввода (Требуется: #include <UIAutomation.au3>)
  996. _UIA_ElementTextSetValue($oElement, $sValue) Устанавливает значение (текст) в текстовый элемент (Требуется: #include <UIAutomation.au3>)
  997. _UIA_FindAllElements($oElementFrom[, $vProperty = 0[, $vPropertyValue = ""]]) Находит все элементы, соответствующие заданному свойству и его значению (Требуется: #include <UIAutomation.au3>)
  998. _UIA_FindAllElementsEx($oElementFrom[, $oCondition = Default[, $iTreeScope = Default]]) Находит все элементы, соответствующие условию поиска (Требуется: #include <UIAutomation.au3>)
  999. _UIA_FindElementsInArray(Const ByRef $aElements, $vProperty, $vPropertyValue[, $fInStr = False[, $fIndexArray = False]]) Находит все элементы, соответствующие заданному свойству и его значению (Требуется: #include <UIAutomation.au3>)
  1000. _UIA_GetControlTypeElement($oElementFrom, $vControlType, $vPropertyValue[, $vProperty = Default[, $fInStr = False]]) Находит элемент (объект) указанного типа с заданным свойством и значением (Требуется: #include <UIAutomation.au3>)
  1001. _UIA_GetElementFromCondition($oElementFrom, $oCondition[, $iTreeScope = Default]) Находит элемент (объект) на основе заданного условия (Требуется: #include <UIAutomation.au3>)
  1002. _UIA_GetElementFromFocus() Создаёт элемент (объект) на основе фокуса ввода (Требуется: #include <UIAutomation.au3>)
  1003. _UIA_GetElementFromHandle($hHandle) Создаёт элемент (объект) на основе дескриптора (Требуется: #include <UIAutomation.au3>)
  1004. _UIA_GetElementFromPoint($iX = Default, $iY = Default) Создаёт элемент (объект) на основе экранных координат (Требуется: #include <UIAutomation.au3>)
  1005. _UIA_ObjectCreate() Создаёт объект UIAutomation (Требуется: #include <UIAutomation.au3>)
  1006. _UIA_WaitControlTypeElement($oElementFrom, $vControlType, $vPropertyValue[, $vProperty = Default[, $fInStr = False[, $iWaitTime = Default]]]) Ожидает элемент (объект) указанного типа с заданным свойством и значением (Требуется: #include <UIAutomation.au3>)
  1007. _UIA_WaitElementFromCondition($oElementFrom, $oCondition[, $iTreeScope = Default[, $iWaitTime = Default]]) Ожидает элемент (объект) на основе заданного условия (Требуется: #include <UIAutomation.au3>)
  1008. #ce
  1009. ; Подсветка функций (файл au3.UserUdfs.properties)
  1010. #cs
  1011. au3.keywords.user.udfs=_uia_createlogicalcondition _uia_createpropertycondition _uia_elementdodefaultaction \
  1012.     _uia_elementfindinarray _uia_elementgetboundingrectangle _uia_elementgetfirstlastchild _uia_elementgetparent \
  1013.     _uia_elementgetpreviousnext _uia_elementgetpropertyvalue _uia_elementmouseclick _uia_elementscrollintoview \
  1014.     _uia_elementsetfocus _uia_elementtextsetvalue _uia_findallelements _uia_findallelementsex _uia_findelementsinarray \
  1015.     _uia_getcontroltypeelement _uia_getelementfromcondition _uia_getelementfromfocus _uia_getelementfromhandle \
  1016.     _uia_getelementfrompoint _uia_objectcreate _uia_waitcontroltypeelement _uia_waitelementfromcondition
  1017. #ce
  1018. ; ============================================================================================
  1019.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement