Что нового

DEFRAGGLER: Отслеживание состояния кнопки "Остановка"

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Мне нужно узнать, когда дефрагментатор DEFRAGGLER завершит процесс дефрагментации...
В момент завершения кнопка "Остановка" становится недоступной...
Пытался составить скрипт, реагирующий на это событие, но безуспешно...
Код:
; НАЧАЛО

 while true
  if WinExists("Piriform Defraggler") then
   MsgBox(0,"",GUICtrlGetState(ControlGetHandle("Piriform Defraggler","Остановка","[CLASS:Button; INSTANCE:15]")))
  endif
  Sleep(100)
 wend

; КОНЕЦ

Подскажите, пожалуйста, что надо было сделать?
 
Автор
snoitaleR

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Провел исследование... :rofl:
Оказывается, кнопки "Анализ", "Дефрагментация", "Приостановка" и "Остановка" при запуске DEFRAGGLER имеют [INSTANCE:13], [INSTANCE:14], [INSTANCE:15] и [INSTANCE:16]...
После проведения анализа или дефрагментации значение INSTANCE всех четырех кнопок уменьшается на 1... :shok:
Случайно нашел с помощью AUT3INFO над кнопкой "Дефрагментация" статичный текст, который блокируется и разблокируется вместе с кнопкой "Дефрагментация", но... не меняет значение [INSTANCE:6]...
Поэтому код получился следующим:
Код:
; НАЧАЛО

 while true
  $STATE=ControlCommand(WinGetHandle("Piriform Defraggler"),"","[CLASS:Static; INSTANCE:6]","IsEnabled","")
  SplashTextOn("Состояние",$STATE,400,40,-1,int(@DesktopHeight*3/4),0,"courier",8)
  Sleep(1000)
 wend

; КОНЕЦ
 
Верх