Что нового

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

saraconor

Новичок
Сообщения
404
Репутация
3
Firefox перечисляет все вкладки, поэтому объектов может быть много. Попробуйте с одной вкладкой.
Если не получится - сообщите версию Firefox.
Также убедитесь, что Firefox не запущен с правами администратора.
Может быть тогда на примере обычного блокнота ? Скажем, в текстовом поле написано "я люблю манную кашу", ищем вначале текст "манную", найдя элемент интерфейса с данным куском текста, копируем весь текст из элемента, а потом жмем кнопку "Справка" в верхней панели.
 
Автор
I

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,431
на примере обычного блокнота
Код:
#include <UIAutomate.au3>

; окно блокнота
$oNotepad = _UIA_GetElementFromHandle(WinGetHandle("[class:Notepad]"))

; поиск по части текста
$aElements = _UIA_FindAllElements($oNotepad)
For $i = 1 To $aElements[0]
  $sText = _UIA_ElementGetPropertyValue($aElements[$i], "Value.Value")
  If StringInStr($sText, "манную") Then ExitLoop
Next
ConsoleWrite($sText & @CRLF)

; Если заранее известен тип элемента, то лучше так
$oEdit = _UIA_GetControlTypeElement($oNotepad, "UIA_EditControlTypeId", "манную", "Value.Value:", True)
; получение всего текста
$sText = _UIA_ElementGetPropertyValue($oEdit, "Value.Value")
ConsoleWrite($sText & @CRLF)

; пункт меню "Справка"
$oItem = _UIA_GetControlTypeElement($oNotepad, "UIA_MenuItemControlTypeId", "Справка")
_UIA_ElementMouseClick($oItem)
 

saraconor

Новичок
Сообщения
404
Репутация
3
Спасибо большое за пример, буду пробывать...
Сообщение автоматически объединено:

В конце выходит вроде как двойное нажатие по пункту "справка", меню открывается и мгновенно закрывается. И так на всех кнопках, в разных программах.
 
Последнее редактирование:

SharkyEXE

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

Пожалуйста, будьте так, любезны, помогите закрыть окно с заголовком "Kaspersky Internet Security", текстом "Срок действия лицензии истекает через 13 дней. Вы можете продлить срок действия лицензии. Если вы уже продлили срок действия лицензии, пожалуйста, активируйте программу сейчас.", кнопкой "Продлить срок действия лицензии", кнопкой "Ввести код активации", в верхнем правом углу активна кнопка "Свернуть", в верхнем правом углу активна кнопка "Закрыть", в верхнем правом углу НЕ активна кнопка "Развернуть"

Отчёты утилит Inspect_W7.exe и Inspect_W10.exe прилагаю

Спасибо.
 

Вложения

  • Запись_2023_12_31_09_45_06_202.mp4_20231231_100407.953.jpg
    Запись_2023_12_31_09_45_06_202.mp4_20231231_100407.953.jpg
    35.3 КБ · Просмотры: 8
  • Inspect_W7.exe.txt
    2.7 КБ · Просмотры: 1
  • Inspect_W10.exe.txt
    5 КБ · Просмотры: 1
  • Inspect_W10.exe.png
    Inspect_W10.exe.png
    376 КБ · Просмотры: 8
  • Inspect_W7.exe.png
    Inspect_W7.exe.png
    378 КБ · Просмотры: 7
Последнее редактирование:

lagovi

Новичок
Сообщения
1
Репутация
0
Хочу поработать с сообщениями в Viber, но не могу понять как считать их, не говоря уже о идентификации непрочитанных. Это вообще реально?
 

sterro_sasha

Новичок
Сообщения
45
Репутация
1
Я так понимаю, что изменить заголовок вкладки никак нельзя при помощи UIAutomate? Value.value есть, заголовок легко считывается при помощи _UIA_GetControlTypeElement и _UIA_ElementGetPropertyValue($oElement, "Value.Value"), но вот свой поставить - никак. Перепробовал уже сотни раз. Стоит защита? Хотя функция _UIA_ElementTextSetValue вроде как возвращает успех.
Сообщение автоматически объединено:

Заголовок вкладки к сожалению поменять нельзя. Убил пару часов на поиск id, но в конце концов перебрав все, решил просто везде установить текст где только можно... и да - заголовок вкладки Chrome не меняется (но при этом легко считывается).

Код:
#include "UIAutomate.au3"

Opt("WinTitleMatchMode", 2)

Sleep(1000)
;Chrome должен быть запущен с ключем --force-renderer-accessibility
;Run("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" & " --force-renderer-accessibility")

$hWnd = WinGetHandle('[ACTIVE]') ;активный - Хром
$oParent = _UIA_GetElementFromHandle($hWnd)

;обычный режим перебора элементов
;(глобально проверяем вообще можно ли менять заголовок, по id вкладки ничего не меняется вообще)
$aElements = _UIA_FindAllElements($oParent)
For $i = 1 To $aElements[0]
    _UIA_ElementTextSetValue($aElements[$i], "New text (title) for Google Chrome")
    ConsoleWrite( _UIA_ElementGetPropertyValue($aElements[$i], "Value.Value") & @CRLF)
Next

;расширенный режим перебора элементов
$aElements = _UIA_FindAllElementsEx($oParent)
For $i = 1 To $aElements[0]
    _UIA_ElementTextSetValue($aElements[$i], "New text (title) for Google Chrome")
    ConsoleWrite( _UIA_ElementGetPropertyValue($aElements[$i], "Value.Value") & @CRLF)
Next
 
Последнее редактирование:
Верх