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>

 


Связанные элементы