Что нового

Нажать кнопку Ok на дочерних окнах

dex24

Новичок
Сообщения
2
Репутация
0
Нужно нажать кнопку Ok на всех дочерних окнах (это по сути сообщение об ошибке, на ней только одна кнопка Ok, заголовок и текст)
Я попробовал
  1. $aList = WinList()
  2. For $i = 1 To $aList[0][0]
  3. ControlClick($aList[$i][1], "", "[class:Button;text:ОК]")
  4. ControlClick($aList[$i][1], "", "[class:Button;text:ОК]")
  5. Next
но с дочерними окнами она не работает
Желательно, кончено, чтобы было логирование - когда окно было закрыто.
С autoIt вообще не знаком (только вчера увидел) - готов заплатить, чтобы сэкономить время для текущей задачи.
Сообщение автоматически объединено:

Привет всем!
Не дождался ответа.
Слепил такой скрипт. Вроде работает. Может, кому пригодится.
Узнал класс окна через AutoIT v3 Window Info, чтобы Enter жать не во всех окнах подряд (у меня много окон с одинаковым названием и сообщение об ошибке, которое нужно закрыть - имеет такое же название, как и нужное окно).

Код:
#include <WinAPI.au3>
#include <File.au3>
DirCreate("C:\Logs")
While 1
$aList = WinList()
For $i = 1 To $aList[0][0]
; Если заголовок окна начинается на ОКНО!, И класс окна TMessageForm, то активируем это окно и жмем Enter
    If StringInStr ($aList[$i][0],"ОКНО!") > 0 And _WinAPI_GetClassName($aList[$i][1]) = "TMessageForm" Then
            WinActivate ($aList[$i][1])
            Send ("{ENTER}")
            _FileWriteLog("C:\Logs\Enter.log", "нажата Enter для окна: " & $aList[$i][0])
    EndIf
Next
Sleep (10000)
WEnd
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
можно искать окно по тексту окна, а не по заголовку
 
Автор
D

dex24

Новичок
Сообщения
2
Репутация
0
можно искать окно по тексту окна, а не по заголовку
Спасибо за точный по существу коммент! Я так и хотел сначала, но не осилил ) Дело было срочное, надо было, чтобы хоть как-то работало. Да и не программист я. Видимо, что-то вроде _IEBodyReadText нужно использовать?
Немного не по теме: мне кажется, правильнее будет "водка сорокАградуснее", несмотря на то, что тут явно просматривается птица сорока :smile:
В AutoIt Понравилась конструкция If ... EndIf - не надо уводить в подпрограмму, процедуру и т.п.
 
Верх