1 (изменено: Pokerist, 2011-07-18 22:37:34)

Тема: AHK: Как не учитывать всплывающие окна?

Привет!
Пользуюсь скриптом, который производит определённые действия в активном окне при нажатии горячих клавиш. 

Например, вот так:

F12::
MouseClick, left,  222, 333
Return

Но есть проблема. Если где-то курсор попал в окне на поле, которое выводет Hint, или подобное всплывающее окно - срабатывание по горячей клавише не происходит.
Активное окно остаётся тем же(у меня это видно по специальной рамке), но скрипт не срабатывает. Как можно научить его не замечать всплывших окошек?
Заранее спасибо!

2

Re: AHK: Как не учитывать всплывающие окна?

Код принято оформлять в специальном поле (кнопка "Code").
Боюсь, что команда MouseClick не связана с активным окном, а имитирует нажатия кнопок мыши, где бы ни находился курсор.

3

Re: AHK: Как не учитывать всплывающие окна?

Проверил всё ещё раз. Этот эффект срабатывает только в некоторых приложениях и при  высокой скорости перемещения курсора, например

SetMouseDelay 0.05

Возможно это как-то связано со скоростью появления/пропадания всплывающего  окна? Пока поставил значение 1.05, но хотелось бы всё-таки вернуть 0.05 
      Что можно сделать?

4

Re: AHK: Как не учитывать всплывающие окна?

Pokerist, уточните:
Что такое Hint? Если это всплывающая подсказка, то это тоже окно, которое принято называть ToolTip.
Какой именно эффект срабатывает при высокой скорости перемещения курсора?

5

Re: AHK: Как не учитывать всплывающие окна?

Да, всплывающая подсказка. При такой скорости клик в указанном месте не производится. Или возможно производится, но в другом месте.

6

Re: AHK: Как не учитывать всплывающие окна?

Прочитал описание MouseClick. Вижу, что я оказался неправ, система отсчёта координат играет роль.
Если курсор был над окном всплывающей подсказки, то и щелчок кнопки мыши будет послан в это окно и с координатами относительно этого окна.

7

Re: AHK: Как не учитывать всплывающие окна?

Очевидно из-за скорости курсора он оказывается над всплывающим окном до того как оно тухнет и его уводит совсем в другое место.
  Можно как-то заставить скрипт не учитывать всплывающие окна?

8

Re: AHK: Как не учитывать всплывающие окна?

Чтобы передать нажатие кнопки мыши конкретному окну, попробуйте использовать ControlClick.

9

Re: AHK: Как не учитывать всплывающие окна?

Если вам эти всплывающие подсказки не нужны и только мешают, то можно попробовать написать отдельно скрипт который будет гасить данные окошки при первом намеке на их появление, что сильно увеличит шансы на попадание клика в нужное вам окно. Для это через Window Spy определяете класс окна этих подсказок и создаете скрипт вроде этого:

SetBatchLines, -1
loop
{
winwait, ahk_class ТочноеИмяКлассаОкнаПодсказки
winclose, ahk_class ТочноеИмяКлассаПодсказки
}