Как любитель чего-то более низкого, чем VB / VBS (C ++ WINAPI - это кошмар для кого-то из моего опыта), я не представляю, как создать длинную lParam для простого сообщения KEYDOWN в C ++ и, вероятно, потратила больше времени Ищите достойное объяснение, чем оно того стоит, сможет ли кто-нибудь точно описать, как это сделать?
Кажется, что почти каждый ответ на этот вопрос на других форумах был «почему» или «вместо этого использовать SendInput», фактически не отвечая на вопрос; Я предполагаю, что это слишком элементарно для людей, чтобы объяснить. В любом случае, вот описание из msdn, очень хотелось бы получить достойное объяснение или ссылку на него, а также работающий пример, если это возможно:
Количество повторов, код сканирования,
флаг расширенного ключа, код контекста,
предыдущий флаг состояния ключа и
флаг переходного состояния, как показано ...
0-15 Количество повторений для текущего
сообщение. Значение является числом
раз нажатие клавиши автоматически повторяется как
результат пользователя, удерживающего
ключ. Если нажатие клавиши удерживается долго
достаточно, несколько сообщений отправляются.
Тем не менее, количество повторений не
накопительный. 16-23 Код сканирования.
значение зависит от OEM.
24 Указывает, является ли ключ
расширенный ключ, такой как правая рука
Клавиши ALT и CTRL, которые появляются на
улучшенная 101- или 102-клавишная клавиатура.
значение равно 1, если это расширенный ключ;
в противном случае оно равно 0. 25-28 Зарезервировано; делать
не использовать
29 Код контекста. Значение равно 1, если
клавиша ALT нажата, а клавиша
нажимается; это 0, если WM_SYSKEYDOWN
сообщение отправлено в активное окно
потому что ни у какого окна нет клавиатуры
фокус.
30 Предыдущее состояние ключа. Значение
равен 1, если клавиша нажата до
сообщение отправлено, или это 0, если ключ
вверх.
31 Переходное состояние. Значение
всегда 0 для сообщения WM_SYSKEYDOWN.