Вы отметили вопрос VB.NET, но на самом деле они вообще не имеют отношения к VB.NET. Они являются константами, определенными в заголовочных файлах Windows, для использования с функциями API Win32.
Что касается разницы, вы не можете много сказать, глядя на их значения. Отдельные значения не особенно важны, поэтому используются именованные идентификаторы. Важно то, где они используются и что документация для этих функций говорит вам, что они означают.
Первый из них, KEYEVENTF_EXTENDEDKEY
, используется с KEYBDINPUT
структурой (который используется вместе с, например, функция SendInput
) для передачи информации о синтезированного ввода с клавиатуры. Если этот флаг используется, это означает, что код сканирования следует интерпретировать как расширенный ключ. Технически это означает, что для кода сканирования предшествует префиксный байт со значением 224 (& HE0 в шестнадцатеричной системе).
Второй, KEYEVENTF_KEYUP
, является еще одним из флагов, доступных для использования с этой структурой. Это означает, что клавиша выпущена (вверх), а не нажата (спускаясь).
Существует общий обзор ввода с клавиатуры here on MSDN. В нем более подробно объясняется, что такое код виртуального ключа, какой расширенный ключ и т. Д.
'KEYEVENTF_KEYUP' относится к случаю отпускания нажатой клавиши. Например, удерживая клавишу вниз, запускается 'KEYEVENTF_KEYDOWN', высвобождая ее, запускается' KEYEVENTF_KEYUP'. Однако я не уверен в том, что «KEYEVENTF_EXTENDEDKEY» делает – JBelter