- Сообщения
- 5,379
- Репутация
- 2,724
AutoIt: 3.3.0.0
Версия: 1.2
Категория: Мышь и клавиатура, Элементы GUI
Описание: Создает и обеспечивает работу с элементами HotKey Input (визуальная установка горячих клавиш).
Синтаксис и параметры:
Пример:
Скриншот:
Источник: HotKeyInput UDF (оффициальный форум)
Автор: Yashied
Примечания:
Версия: 1.2
Категория: Мышь и клавиатура, Элементы GUI
Описание: Создает и обеспечивает работу с элементами HotKey Input (визуальная установка горячих клавиш).
Синтаксис и параметры:
Основные функции:
_GUICtrlCreateHotKeyInput
_GUICtrlDeleteHotKeyInput
_GUICtrlReadHotKeyInput
_GUICtrlSetHotKeyInput
_GUICtrlReleaseHotKeyInput
Дополнительные функции:
_KeyLock
_KeyUnlock
_KeyLoadName
_KeyToStr
[box title=_GUICtrlCreateHotKeyInput]
Создает элемент HotKey Input для GUI.
Синтаксис вызова:
Параметры:
$iKey
16-битный код горячей клавиши, который состоит из младшего (VK - Virtual Key) и старшего (CK - Command Key) байтов. Значения битов для этих байтов показаны ниже.
Вы можете использовать функцию BitOR() для объединения VK- и CK-значений. Код клавиши не может состоять только из одного(их) CK-значения. Так же, не допускается использование более одного VK-значения. Функция не делает различий между левыми и правыми вспомогательными клавишами. Например, нельзя назначить горячую клавишу с использованием только левой клавиши CTRL. Это так же будет работать и для правой клавиши. Этот параметр идентичен аналогичному параметру из HotKey библиотеки.
$iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle
Эти параметры идентичны параметрам для функии GUICtrlCreateInput().
$sSeparator (Опционально)
Строка символов для разделения имен клавиш при отображении в элементе HotKey Input. По умолчанию - "-".
Возвращаемое значение:
Функция возвращает идентификатор (controlID) созданного элемента HotKey Input, аналогично другим GUICtrlCreate... функциям. В случае ошибки возвращает 0.
Примечания:
[box title=_GUICtrlDeleteHotKeyInput]
Уничтожает элемент HotKey Input.
Синтаксис вызова:
Параметры:
$controlID
Идентификатор (controlID) уничтожаемого элемента HotKey Input, возвращенный функцией _GUICtrlCreateHotKeyInput().
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0.
Примечания:
[box title=_GUICtrlReadHotKeyInput]
Считывает 16-битный код горячей клавиши из элемента HotKey Input.
Синтаксис вызова:
Параметры:
$controlID
Идентификатор (controlID) элемента HotKey Input, возвращенный функцией _GUICtrlCreateHotKeyInput(), из которого необходимо считать код горячей клавиши.
Возвращаемое значение:
Функция возвращает 16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()), установленный в поле элемента HotKey Input. В случае ошибки или отсутствия установленной горячей клавиши возвращает 0.
Примечания:
[box title=_GUICtrlSetHotKeyInput]
Устанавливает 16-битный код горячей клавиши в элемент HotKey Input.
Синтаксис вызова:
Параметры:
$controlID
Идентификатор (controlID) элемента HotKey Input, возвращенный функцией _GUICtrlCreateHotKeyInput(), в который необходимо установить заданную горячую клавишу.
$iKey
16-битный код устанавливаемой горячей клавиши (см. _GUICtrlCreateHotKeyInput()). Если значение этого параметра равно нулю, то элемент HotKey Input будет очищен.
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0.
Примечания:
Нет.
[/box]
[box title=_GUICtrlReleaseHotKeyInput]
Уничтожает все элементы HotKey Input, созданные ранее при помощи функции _GUICtrlCreateHotKeyInput() и удаляет хук из цепочки хуков.
Синтаксис вызова:
Параметры:
Нет.
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0.
Примечания:
Нет.
[/box]
[box title=_KeyLock]
Блокирует использование указанной горячей клавиши для всех элементов HotKey Input.
Синтаксис вызова:
Параметры:
$iKey
16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()), которая должна быть заблокирована.
Возвращаемое значение:
Нет.
Примечания:
[box title=_KeyUnlock]
Разблокирует указанную горячую клавишу, заблокированную ранее функцией _KeyLock(), для всех элементов HotKey Input.
Синтаксис вызова:
Параметры:
$iKey
16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()), заблокированной ранее с помощью функции _KeyLock(), которая должна быть разблокирована.
Возвращаемое значение:
Нет.
Примечания:
[box title=_KeyLoadName]
Загружает названия клавиш, которые будут отображаться во всех элементах HotKey Input.
Синтаксис вызова:
Параметры:
$aKeyName
Одномерный массив из 256 строк, содержащих названия клавиш с кодами, соответствующими индексам в массиве. Эти названия будут отображаться в поле для всех элементов HotKey Input. Например:
Элемент массива с нулевым индексом содержит название, которое будет отображаться в поле HotKey Input при отсутствии установленной горячей клавиши (может быть пустым - ""). Названия для клавиш мыши (0x01 - 0x06) не используются и должны быть пустыми. Коды для необходимых клавиш можно узнать из таблицы Virtual-Key Codes. Если имя клавиши не определено (пустая строка), то эта клавиша будет исключена для использования в любых комбинациях в элементах HotKey Input. Таким образом можно ограничивать допустимый набор разрешенных для использования клавиш. По умолчанию загружается массив $VK, находящийся в файле vkArray.au3. Этот файл является составной частью библиотеки HotKeyInput.
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0 и устанавливает значение @error в 1.
Примечания:
[box title=_KeyToStr]
Преобразует 16-битный код горячей клавиши в строку, содержащую комбинацию из названий клавиш и разделителей.
Синтаксис вызова:
Параметры:
$iKey
16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()) для преобразования.
$sSeparator
Строка символов для разделения имен клавиш при отображении в элементе HotKey Input. По умолчанию - "-".
Возвращаемое значение:
Функция возвращает строку, состоящую из названий клавиш и разделителей, например "None", "Win-F" или "Alt-Shift-D". В случае ошибки (клавиша не определена) - "".
Примечания:
_GUICtrlCreateHotKeyInput
_GUICtrlDeleteHotKeyInput
_GUICtrlReadHotKeyInput
_GUICtrlSetHotKeyInput
_GUICtrlReleaseHotKeyInput
Дополнительные функции:
_KeyLock
_KeyUnlock
_KeyLoadName
_KeyToStr
[box title=_GUICtrlCreateHotKeyInput]
Создает элемент HotKey Input для GUI.
Синтаксис вызова:
Код:
_GUICtrlCreateHotKeyInput ( $iKey, $iLeft, $iTop [, $iWidth [, $iHeight [, $iStyle [, $iExStyle [, $sSeparator]]]]] )
Параметры:
$iKey
16-битный код горячей клавиши, который состоит из младшего (VK - Virtual Key) и старшего (CK - Command Key) байтов. Значения битов для этих байтов показаны ниже.
0-7 | Определяет код горячей клавиши из таблицы Virtual-Key Codes. Коды клавиш мыши (0x01 - 0x06) и вспомогательных клавиш (0x11, 0x12 и т.д) не поддерживаются. |
8 | Задает клавишу SHIFT. |
9 | Задает клавишу CTRL. |
10 | Задает клавишу ALT. |
11 | Задает клавишу WIN. |
12-15 | Не используются и должны быть установлены в нулевое значение. |
Вы можете использовать функцию BitOR() для объединения VK- и CK-значений. Код клавиши не может состоять только из одного(их) CK-значения. Так же, не допускается использование более одного VK-значения. Функция не делает различий между левыми и правыми вспомогательными клавишами. Например, нельзя назначить горячую клавишу с использованием только левой клавиши CTRL. Это так же будет работать и для правой клавиши. Этот параметр идентичен аналогичному параметру из HotKey библиотеки.
$iLeft, $iTop, $iWidth, $iHeight, $iStyle, $iExStyle
Эти параметры идентичны параметрам для функии GUICtrlCreateInput().
$sSeparator (Опционально)
Строка символов для разделения имен клавиш при отображении в элементе HotKey Input. По умолчанию - "-".
Возвращаемое значение:
Функция возвращает идентификатор (controlID) созданного элемента HotKey Input, аналогично другим GUICtrlCreate... функциям. В случае ошибки возвращает 0.
Примечания:
- Для уничтожения элемента HotKey Input используйте только функцию _GUICtrlDeleteHotKeyInput(). Не используйте GUICtrlDelete().
- HotKey Input не будет работать в выключенном состоянии - $GUI_DISABLE.
- Перед вызовом GUIDelete() рекомендуется уничтожить при помощи функции _GUICtrlReleaseHotKeyInput() все созданные ранее элементы HotKey Input.
[box title=_GUICtrlDeleteHotKeyInput]
Уничтожает элемент HotKey Input.
Синтаксис вызова:
Код:
_GUICtrlDeleteHotKeyInput ( $controlID )
Параметры:
$controlID
Идентификатор (controlID) уничтожаемого элемента HotKey Input, возвращенный функцией _GUICtrlCreateHotKeyInput().
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0.
Примечания:
- Для уничтожения элемента HotKey Input используйте только эту функцию. Не используйте GUICtrlDelete().
- Если элемент HotKey Input является последним из созданных, то хук автоматически будет удален из цепочки хуков после его уничтожения.
- Для уничтожения всех ранее созданных элементов HotKey Input используйте функцию _GUICtrlReleaseHotKeyInput().
[box title=_GUICtrlReadHotKeyInput]
Считывает 16-битный код горячей клавиши из элемента HotKey Input.
Синтаксис вызова:
Код:
_GUICtrlReadHotKeyInput ( $controlID )
Параметры:
$controlID
Идентификатор (controlID) элемента HotKey Input, возвращенный функцией _GUICtrlCreateHotKeyInput(), из которого необходимо считать код горячей клавиши.
Возвращаемое значение:
Функция возвращает 16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()), установленный в поле элемента HotKey Input. В случае ошибки или отсутствия установленной горячей клавиши возвращает 0.
Примечания:
- Для получения строкового значения горячей клавиши используйте функцию _KeyToStr().
[box title=_GUICtrlSetHotKeyInput]
Устанавливает 16-битный код горячей клавиши в элемент HotKey Input.
Синтаксис вызова:
Код:
_GUICtrlSetHotKeyInput ( $controlID, $iKey )
Параметры:
$controlID
Идентификатор (controlID) элемента HotKey Input, возвращенный функцией _GUICtrlCreateHotKeyInput(), в который необходимо установить заданную горячую клавишу.
$iKey
16-битный код устанавливаемой горячей клавиши (см. _GUICtrlCreateHotKeyInput()). Если значение этого параметра равно нулю, то элемент HotKey Input будет очищен.
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0.
Примечания:
Нет.
[/box]
[box title=_GUICtrlReleaseHotKeyInput]
Уничтожает все элементы HotKey Input, созданные ранее при помощи функции _GUICtrlCreateHotKeyInput() и удаляет хук из цепочки хуков.
Синтаксис вызова:
Код:
_GUICtrlReleaseHotKeyInput ( )
Параметры:
Нет.
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0.
Примечания:
Нет.
[/box]
[box title=_KeyLock]
Блокирует использование указанной горячей клавиши для всех элементов HotKey Input.
Синтаксис вызова:
Код:
_KeyLock ( $iKey )
Параметры:
$iKey
16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()), которая должна быть заблокирована.
Возвращаемое значение:
Нет.
Примечания:
- Функция является независимой и может быть вызвана в любое время.
- Функция блокирует горячие клавиши только для элементов HotKey Input. Более того, после блокировки, эти горячие клавиши будут доступны для других приложений. Например, если заблокировать ALT-TAB (0x0409), то эта комбинация будет работать так же, как и раньше, в то время когда элементы HotKey Input находятся в фокусе.
- Функция блокирует комбинацию клавиш (горячую клавишу), а не отдельную клавишу. Таким образом нельзя заблокировать, например клавишу F5, остается возможность использовать эту клавишу в сочетании с системными клавишами - CTRL, ALT и т.д. Для этой цели используйте функцию _KeyLoadName().
- С помощью этой функции можно заблокировать сколько угодно комбинаций клавиш, но не более одной за один вызов функции.
- Для снятия блокировки используйте функцию _KeyUnlock().
[box title=_KeyUnlock]
Разблокирует указанную горячую клавишу, заблокированную ранее функцией _KeyLock(), для всех элементов HotKey Input.
Синтаксис вызова:
Код:
_KeyUnlock ( $iKey )
Параметры:
$iKey
16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()), заблокированной ранее с помощью функции _KeyLock(), которая должна быть разблокирована.
Возвращаемое значение:
Нет.
Примечания:
- Функция является независимой и может быть вызвана в любое время.
- С помощью этой функции можно разблокировать сколько угодно, заблокированных ранее комбинаций клавиш, но не более одной за один вызов функции.
- Для блокировки используйте функцию _KeyLock().
[box title=_KeyLoadName]
Загружает названия клавиш, которые будут отображаться во всех элементах HotKey Input.
Синтаксис вызова:
Код:
_KeyLoadName ( $aKeyName )
Параметры:
$aKeyName
Одномерный массив из 256 строк, содержащих названия клавиш с кодами, соответствующими индексам в массиве. Эти названия будут отображаться в поле для всех элементов HotKey Input. Например:
Код:
Dim $aKeyName[256]
$aKeyName[0x00] = "None"
$aKeyName[0x01] = ""
$aKeyName[0x02] = ""
$aKeyName[0x03] = ""
$aKeyName[0x04] = ""
$aKeyName[0x05] = ""
$aKeyName[0x06] = ""
$aKeyName[0x07] = ""
$aKeyName[0x08] = "Backspace"
$aKeyName[0x09] = "Tab"
...
$aKeyName[0xFF] = ""
Элемент массива с нулевым индексом содержит название, которое будет отображаться в поле HotKey Input при отсутствии установленной горячей клавиши (может быть пустым - ""). Названия для клавиш мыши (0x01 - 0x06) не используются и должны быть пустыми. Коды для необходимых клавиш можно узнать из таблицы Virtual-Key Codes. Если имя клавиши не определено (пустая строка), то эта клавиша будет исключена для использования в любых комбинациях в элементах HotKey Input. Таким образом можно ограничивать допустимый набор разрешенных для использования клавиш. По умолчанию загружается массив $VK, находящийся в файле vkArray.au3. Этот файл является составной частью библиотеки HotKeyInput.
Возвращаемое значение:
При успешном завершении функция возвращает 1, в случае ошибки - 0 и устанавливает значение @error в 1.
Примечания:
- Если длина массива отличается от 256, то он не будет загружен и функция возвратит ошибку.
- Помимо глобальной блокировки, с помощью этой функции можно переименовывать названия клавиш, например Shift в SHIFT и т.д.
- Названия для клавиш CTRL, ALT, SHIFT и WIN с кодами (0xA2, 0xA3), (0xA4, 0xA5), (0xA0, 0xA1) и (0x5B, 0x5C) соответственно должны быть одинаковые (см. vkArray.au3). Коды 0x10, 0x11 и 0x12 не поддерживаются.
[box title=_KeyToStr]
Преобразует 16-битный код горячей клавиши в строку, содержащую комбинацию из названий клавиш и разделителей.
Синтаксис вызова:
Код:
_KeyToStr ( $iKey [, $sSeparator] )
Параметры:
$iKey
16-битный код горячей клавиши (см. _GUICtrlCreateHotKeyInput()) для преобразования.
$sSeparator
Строка символов для разделения имен клавиш при отображении в элементе HotKey Input. По умолчанию - "-".
Возвращаемое значение:
Функция возвращает строку, состоящую из названий клавиш и разделителей, например "None", "Win-F" или "Alt-Shift-D". В случае ошибки (клавиша не определена) - "".
Примечания:
- Возвращаемая этой функцией строка предназначена только для визуального представления горячей клавиши и не может быть использована в качестве параметра для функции HotKeySet().
- Для переименования названий клавиш используйте функцию _KeyLoadName().
Пример:
Код:
#Include <GUIConstantsEx.au3>
#Include <HotKeyInput.au3>
Global $Form, $ButtonOk, $HotkeyInput1, $HotkeyInput2, $GUIMsg
$Form = GUICreate('Test', 300, 160)
GUISetFont(8.5, 400, 0, 'Tahoma', $Form)
$HotkeyInput1 = _GUICtrlCreateHotKeyInput(0, 56, 55, 230, 20)
$HotkeyInput2 = _GUICtrlCreateHotKeyInput(0, 56, 89, 230, 20)
_KeyLock(0x062E) ; Lock CTRL-ALT-DEL for Hotkey Input control, but not for Windows
GUICtrlCreateLabel('Hotkey1:', 10, 58, 44, 14)
GUICtrlCreateLabel('Hotkey2:', 10, 92, 44, 14)
GUICtrlCreateLabel('Click on Input box and hold a combination of keys.' & @CR & 'Press OK to view the code.', 10, 10, 280, 28)
$ButtonOk = GUICtrlCreateButton('OK', 110, 124, 80, 23)
GUICtrlSetState(-1, BitOR($GUI_DEFBUTTON, $GUI_FOCUS))
GUISetState()
While 1
$GUIMsg = GUIGetMsg()
Select
Case $GUIMsg = $GUI_EVENT_CLOSE
Exit
Case $GUIMsg = $ButtonOk
$t = ' Hotkey1: 0x' & StringRight(Hex(_GUICtrlReadHotKeyInput($HotkeyInput1)), 4) & ' (' & GUICtrlRead($HotkeyInput1) & ') ' & @CR & @CR & _
' Hotkey2: 0x' & StringRight(Hex(_GUICtrlReadHotKeyInput($HotkeyInput2)), 4) & ' (' & GUICtrlRead($HotkeyInput2) & ') '
MsgBox(0, 'Code', $t, 0, $Form)
EndSelect
WEnd
Скриншот:
Источник: HotKeyInput UDF (оффициальный форум)
Автор: Yashied
Примечания:
- Эта библиотека была разработана специально для поддержки библиотеки HotKey, но может быть использована и отдельно от нее.
- Так как библиотека использует глобальный хук, то все ранее установленные в системе горячие клавиши не будут работать до тех пор, пока элемент HotKey Input находится в фокусе (собственно это и не нужно). Исключение составляют только те горячие клавиши, которые были заблокированы при помощи функции _KeyLock().
- Библиотека не предназначена для работы со стандартной функцией HotKeySet(), но может быть легко модифицирована для этой цели. (см. функцию _KeyToStr() и этот материал).
- Файл vkArray.au3 является составной частью данной библиотеки и должен находиться в той же директории, что и сама библиотека.