Что нового

[Мышь, клавиатура] Не нажимается ESC

instane

Новичок
Сообщения
4
Репутация
0
Хочу автоматизировать некое действие и от скрипта мне требуется нажатие эскейпа и пара кликов мыши. Мышь то вот кликает хорошо, а эскейп то нажмется, то нет. Пробую и так
Код:
$new = WinGetHandle("[ACTIVE]")
ControlSend($new,"","", "{ESC}")

И так
Код:
Send("{ESC}")
 

madmasles

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


С уважением, ваш Модератор.
 
Автор
instane

instane

Новичок
Сообщения
4
Репутация
0
Код исправил, тема, как мне кажется, называется нормально
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
instane [?]
В этом случае лучше искать не активное окно, а именно то, что вам нужно. Для этого можно использовать либо заголовок, либо класс, либо другие, перечисленные в справке, свойства.
А в этом случае нужно быть уверенным, что окно действительно активно. Для этого используйте
Код:
WinActivate()
WinWaitActive()
 
Автор
instane

instane

Новичок
Сообщения
4
Репутация
0
Попробовал для конкретного окна(через класс)- все равно ничего.
WinActivate() использую, еще на всякий случай запускаю с запросом админских прав. Если отправить сразу несколько Send() с клавишей, то хоть разок, да нажмется.
Скрипт использую в battlefield 3
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Данной игры у меня нет, проверить не могу. Но предложение такое: увеличить задержку между нажатием и отпусканием клавиши. Пять миллисекунд (по умолчанию) иногда недостаточно и можно попробовать увеличить задержку либо с помощью опции
Код:
Opt("SendKeyDownDelay", 30)
либо с помощью кода
Код:
Send("{esc down}")
Sleep(50)
Send("{esc up}")
 
Автор
instane

instane

Новичок
Сообщения
4
Репутация
0
Премного благодарен вам
Код:
Opt("SendKeyDownDelay", 30)

именно этого мне и не хватало! :ok:
 
Верх