Из документации на WM_HOTKEY :
lParam Слово младшего разряда определяет клавиши, которые должны были быть нажаты в комбинации с клавишей, указанной старшим словом, для генерации сообщения WM_HOTKEY. Это слово может быть одним или несколькими из следующих значений. Старшее слово определяет код виртуальной клавиши горячей клавиши.
Таким образом, вы можете прочитать LParam
член m
, чтобы определить, какие клавиши были нажаты (в качестве альтернативы, если вы назначите более разумные идентификаторы, чем GetHashCode
, вы можете проверить WParam
).
«Старшее слово» и «младшее слово» относятся к частям целого числа (на самом деле IntPtr
), содержащемуся в LParam
, поэтому вам необходимо извлечь их. Слово младшего разряда i & 0xFFFF
, слово старшего разряда (i >> 16) & 0xFFFF
.
Чтобы определить, какая комбинация клавиш была нажата, проверьте младшие четыре бита младшего слова для модификаторов (shift, alt, control) и сравните старшее слово с виртуальным кодом клавиши - который для букв равен к символьному значению заглавной буквы (например, код виртуальной клавиши для A является (int) 'A', но не (int) 'a').
Ваша комбинация 'A + B + C + D' недопустима, поскольку WM_HOTKEY
горячие клавиши поддерживают только один символ. Вам нужно будет подключить клавиатуру, чтобы обнаружить эту комбинацию из любого места (или обрабатывать сообщения, если вы хотите обнаруживать ее только тогда, когда ваше приложение активно).