Привет всем! Необходимо отследить всплывающее окно антивируса Kaspersky и нажать в нем кнопку. Для меня это стало каким-то мистическим действом. WinExists почему-то не всегда справлялся с поиском окна, вернее работал 2-3 раза из 10. Всплывающее окно не имеет Title, так что обращаться приходилось по классу, в окне надо нажать кнопку "Разрешить(по умолчанию)", при проверке с помощью Window Info оказалось, что это не кнопка вовсе, во всяком случае поля в Window Info были пусты. Пришлось сделать костыльным методом, отсчитывать количество пикселей от Edit2(он выделен красным цветом на скрине), но результата никакого. В сухом остатке имеем: 2-3 раза из 10 можно отследить всплывающее окно, нажать кнопку нельзя, после того как окно отслежене скрипт переставал выполняться, даже если его зациклить.
Прошу прощения за вырвиглазный код.
Может есть какое-то решение?
Прошу прощения за вырвиглазный код.
Код:
#include <FTPEx.au3>
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>
#RequireAdmin
$download = InetGet("http://soft.sibnet.ru/get/?id=30802",".\K-Lite_Codec_Pack_1005_Mega.exe",1,1)
ProgressOn("Скачивание файла","Скачивание файла с сервера","0 %")
$file_size = InetGetSize("http://soft.sibnet.ru/get/?id=30802")
Do
Sleep(250)
$download_percent = Int(100*InetGetInfo($download,0)/$file_size)
ProgressSet($download_percent,$download_percent&"Процентов скачалось")
Until InetGetInfo($download,2)
ProgressSet(100,"Завершено","Полностью скачалось")
Local $bytes = InetGetInfo($download,0)
InetClose($download)
Sleep(2000)
ProgressOff()
MsgBox(4096,"","Количество скачанных байт:"&$bytes,2)
Run("K-Lite_Codec_Pack_1005_Mega.exe")
WinWaitActive("Setup - K-Lite Mega Codec Pack")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:1]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:2]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:2]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:2]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:2]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:2]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:5]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:6]")
ControlClick("Setup - K-Lite Mega Codec Pack","","[CLASS:TNewButton; INSTANCE:6]")
$i = 0
Sleep(20000)
While Not WinExists("[CLASS:AVP.AlertDialog]","")
If WinExists("[CLASS:AVP.AlertDialog]","") Then
MsgBox(0,"","Сейчас кликну",2)
While $i<500
$curs_pos = ControlGetPos("[CLASS:AVP.AlertDialog]","","[CLASS:Edit; INSTANCE:2]")
MsgBox(0,"","Я тут"&$cursor_pos[0]&"|"&$cursor_pos[1],2)
Sleep(100)
MouseMove($curs_pos[0],$curs_pos[1]+60)
MouseClick("",$curs_pos[0],$curs_pos[1]+65)
$i=$i+1
WEnd
ExitLoop
EndIf
WEnd
Может есть какое-то решение?