Что нового

[Мышь, клавиатура] Цикл повторного нажатия клавиши при активном окне

choknutii

Новичок
Сообщения
5
Репутация
0
Здравствуйте, начал изучать AutoIT и сталкнулся с такой проблемой, нужно запускать самораспаковывающийся архив, и здесь небольшой нюанс, название архивов разное и при разархивировании нужно нажать "Принять" и "Извлечь", а иногда чтобы распокавать архив нужно нажать "Извлечь". Когда просто нужно нажать 2 раз Enter работает, а вот когда 1 раз возникают затруднения, программа ждёт открытия окна Самораспаковывающегося архива, хотя архив уже закрылся.

Помогите дописать или как нибудь изменить код, заранее благодарен

Код:
FileMove("C:\Documents and Settings\asu2\Рабочий стол\Разослать\*.exe","C:\Documents and Settings\asu2\Рабочий стол\Разослать\обновление.exe")
Sleep(500)
$Flag = FileExists("C:\Documents and Settings\asu2\Рабочий стол\Разослать\обновление.exe")
If $Flag Then
Run ("C:\Documents and Settings\asu2\Рабочий стол\Разослать\обновление.exe")
WinWait("Самораспаковывающийся архив WinRAR")
Send("{ENTER}")
Sleep(1000)
if WinWaitActive("Самораспаковывающийся архив WinRAR") Then
Send("{ENTER}")
EndIf
Sleep(5000)
FileDelete("C:\Documents and Settings\asu2\Рабочий стол\Разослать\обновление.exe")
Else
 ProcessClose("obnovlenie.exe")
EndIf
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
choknutii
Код:
; Если в течение двух секунд появилось окно с кнопкой "Принять"
If WinWaitActive("Самораспаковывающийся архив WinRAR", "Принять", 2) Then
  Send("{ENTER}")
  Sleep(1000)
EndIf
; В любом случае жмём "Извлечь"
Send("{ENTER}")
 
Автор
C

choknutii

Новичок
Сообщения
5
Репутация
0
Спасибо помогло, буду изучать дальше
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
choknutii
Можно еще использовать режим командной строки Rar.
Пример:
Код:
RunWait("C:\Program Files\WinRAR\Rar.exe x -y обновление.exe", "", @SW_HIDE)
 
Верх