If
Проверяет условие и выполняет ваши инструкции, только если результатом проверки стала истина.
Синтаксис
<If условие аргументы>
или
<If переменная Is значение>
или
<If переменная IsNot значение>
Параметры
Условия и аргументы могут быть следующими:
ActiveWinIs название // активным окном является [название]
ActiveWinIsNot название // активным окном не является [название]
HotkeysAreOn // отправка нажатий в окна включена
HotkeysAreOff // отправка нажатий в окна отключена
WinExists название // существует окно с названием [название]
WinDoesNotExist название // не существует окна с названием [название]
MouseIsOverWindow название // курсор расположен над окном [название]
MouseIsNotOverWindow название // курсор не расположен над окном [название]
MouseIsOverWindowRect название X Y ширина высота // курсор расположен в области окна [название] с координатами [X] [Y] и размерами [ширина] [высота]
MouseIsNotOverWindowRect название X Y ширина высота // курсор не расположен в области окна [название] с координатами [X] [Y] и размерами [ширина] [высота]
MouseIsOverScreenRect X Y ширина высота // курсор расположен в области экрана с координатами [X] [Y] и размерами [ширина] [высота]
MouseIsNotOverScreenRect X Y ширина высота // курсор не расположен в области экрана с координатами [X] [Y] и размерами [ширина] [высота]
WinPosIs название X Y // координаты расположения окна [название] равны [X] [Y]
WinPosIsNot название X Y // координаты расположения окна [название] не равны [X] [Y]
WinSizeIs название ширина высота // размеры окна [название] равны [ширина] [высота]
WinSizeIsNot название ширина высота // размеры окна [название] не равны [ширина] [высота]
WinRectIs название X Y ширина высота // координаты расположения окна [название] равны [X] [Y], и его размеры равны [ширина] [высота]
WinRectIsNot название X Y ширина высота // координаты расположения окна [название] не равны [X] [Y], либо его размеры не равны [ширина] [высота]
Название - заголовок окна. Вы сможете указывать неполные названия окон, если в меню HotkeyNet "Options > Settings", в секции "Window name match" выберите опцию "Partial match". Как и везде в HotkeyNet, названия окон чувствительны в регистру.
Переменная - название переменной, созданной командой SetVar.
Значение - значение переменной, созданной командой SetVar.
X и Y - горизонтальная и вертикальная координаты левого верхнего угла выбранной области. Если выбранная область относится к окну, то координаты рассчитываются от левого верхнего угла окна. А если выбранная область относится непосредственно к экрану, то координаты рассчитываются от левого верхнего угла основного экрана.
Ширина и высота - размеры прямоугольной области, заданные в пикселях.
Проверка позиции курсора
Вместо проверки условий наподобие "MouseIsOverWindowRect" может оказаться удобнее создать кнопки.
Примечания
Условие проверяется только на локальном компьютере (на котором вы нажимаете клавишу).
If-блоки всегда вкладываются внутрь Toggle-блоков (если применён циклический переключатель). Вы можете увидеть как HotkeyNet интерпретирует вложенность в назначенных вами клавишах, нажав "Show loaded hotkeys" в правом нижнем углу программы.
Нет необходимости дописывать в конце оператор EndIf до тех пор, пока вам не понадобится добавить действия, которые должны всегда выполняться после If-блока, как это видно на втором примере снизу.
Ограничения
Оператор If нельзя использовать в пользовательских командах. Если вам нужно проверить условие внутри одной из таких команд, создайте горячую клавишу и вызывайте её как подпрограмму при помощи DoHotkey.
Нельзя вложить один If-блок внутрь другого If-блока. Обойти это ограничение можно, если If-блок младшего уровня поместить в отдельную горячую клавишу, и вызвать на его месте новую клавишу с помощью DoHotkey.
Примеры
<Hotkey F1>
<If ActiveWinIs WoW1>
<SendLabel w1>
<Key 1>
<Else If ActiveWinIs WoW2>
<Sendlabel w2>
<Key 2>
<Else>
<SendFocusWin>
<Key %Trigger%>
Следующий пример иллюстрирует ситуацию, в которой требуется оператор EndIf:
<Hotkey F1>
<If ActiveWinIs WoW1>
<SendLabel w1>
<Key 1>
<EndIf>
<SendFocusWin> // Этот код будет выполнен в любом случае
<Text Hello>