Что нового

[Баг] Ошибка в функции HotKeySet()

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Формат вызова функции:
HotKeySet ( "key" [, "function"] )

Описание ошибки:
Не срабатывают горячие клавиши, содержащие в параметре "key" символы, которые не совпадают с текущей раскладкой клавиатуры по умолчанию (Правильней было бы сказать "Язык ввода по умолчанию").

Операционные системы:
Windows XP RU SP3 32
Windows 7 Домашняя расширенная RU 32

Пример:
1. Установите текущей раскладкой клавиатуры по умолчанию "Русский - Русская"...
2. Запустите на выполнение скрипт:
Код:
; НАЧАЛО

 HotKeySet("+!d","DATETIME")

 while true
  Sleep(100)
 wend

 Func DATETIME()
  ClipPut(@YEAR&"-"&@MON&"-"&@MDAY&"-"&@HOUR&"-"&@MIN&"-"&@SEC)
  MsgBox(0,"Диагностика","Дата и время в буфере обмена")
 EndFunc

; КОНЕЦ

3. Нажмите комбинацию клавиш [ALT]+[SHIFT]+[D]
4. Завершите выполнение скрипта
5. Установите текущей раскладкой клавиатуры по умолчанию "Английский (США) - США"...
6. Запустите на выполнение тот же скрипт
7. Нажмите комбинацию клавиш [ALT]+[SHIFT]+[D]
8. Завершите выполнение скрипта

Пример:
Для случаев, когда установлена единственная раскладка клавиатуры "Английскй (США) - США", можно в параметре "key" функции HotKeySet() заменить символ "d" на символ "в", соответствующий русской раскладке клавиатуры.

Пример:
Скрипт, предложенный Yashied, регистрирует ту же комбинацию клавиш, но она срабатывает при любой раскладке клавиатуры по умолчанию:
Код:
$VK_D = 0x44

$MOD_ALT = 0x0001
$MOD_CONTROL = 0x0002
$MOD_SHIFT = 0x0004
$MOD_WIN = 0x0008

$hWnd = GUICreate('')
GUIRegisterMsg(0x0312, "MY_WM_HOTKEY") ; WM_HOTKEY

; Set ALT-SHIT-D
DllCall('user32.dll', 'int', 'RegisterHotKey', 'hwnd', $hWnd, 'int', '0', 'uint', BitOR($MOD_ALT, $MOD_SHIFT), 'uint', $VK_D)

While 1
    Sleep(100)
WEnd

Func MY_WM_HOTKEY($hWnd, $Msg, $wParam, $lParam)
    MsgBox(0, '', 'You pressed ALT-SHIFT-D')
EndFunc   ;==>MY_WM_HOTKEY

Это можно учесть при исправлении ошибки...
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
alex33
Вы на даты поста от snoitaleR и поста по ссылке оставленной вами обращали внимание :blink:
 
Верх