страничка tripsin'а


Главная | Статьи | Заметки | Файлы | Ссылки | я

ФУНКЦИИ ДЛЯ ИМИТАЦИИ ВВОДА ДАННЫХ ПОЛЬЗОВАТЕЛЕМ

Функция keybd_event 

Функция keybd_event синтезирует нажатие клавиши. Система может использовать такое синтезируемое нажатие клавиши, чтобы создать сообщение WM_KEYUP или WM_KEYDOWN. Вызывает функцию keybd_event программа обработки прерываний драйвера клавиатуры.

Windows NT/2000/XP: Эта функция была заменена. Используйте SendInput вместо нее.

Синтаксис

VOID keybd_event(      

    BYTE bVk,

    BYTE bScan,

    DWORD dwFlags,

    PTR dwExtraInfo

);

Параметры

bVk

[in] Определяет код виртуальной клавиши. Код должен быть значением в диапазоне от 1 до 254. Полный список  см. в статье Коды виртуальных клавиш.

bScan

Этот параметр не используется.

 dwFlags

[in] Определяет различные виды операций функции. Этот параметр может состоять из одного или нескольких ниже следующих  значений.

Флажок

Предназначение

KEYEVENTF_EXTENDEDKEY

Если он установлен, скэн-коду предшествует префиксный байт, имеющий значение 0xE0 (224).

KEYEVENTF_KEYUP

Если он установлен, клавиша была отпущена. Если не установлен, клавиша была нажата.

dwExtraInfo

[in] Определяет дополнительное значение, связанное с нажатием клавиши.

Возвращаемые значения

У этой функции нет возвращаемых значений.

Замечания

Прикладная программа может смоделировать нажатие клавиши PrintScreen, чтобы получить снимок экрана и сохранить его в буфере обмена. Чтобы сделать это, вызовите keybd_event с установленным параметром bVk в VK_SNAPSHOT.

Windows NT/2000/XP: Функция keybd_event может переключить клавиши NUM LOCK, CAPS LOCK и SCROLL LOCK.

Windows 95/98/Me: Функция keybd_event может переключить только клавиши CAPS LOCK и SCROLL LOCK. Она не может переключить клавишу NUM LOCK.

Ниже следующее типовая программа переключает индикатор NUM LOCK, используя функцию keybd_event () виртуальной клавишей VK_NUMLOCK. Требуется Булево значение, которое указывает, должен ли индикатор быть выключен - (ЛОЖЬ (FALSE)) или включен - (ИСТИНА (TRUE)). Та же самая методика может использоваться для клавиши CAPS LOCK (VK_CAPITAL)  и клавиши SCROLL LOCK (VK_SCROLL).

Показываем пример

#include <windows.h> 

  void SetNumLock( BOOL bState ) 

{

     BYTE keyState[256];

GetKeyboardState((LPBYTE)&keyState);

if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||

(!bState && (keyState[VK_NUMLOCK] & 1)) )

{

// Моделируем нажатие клавиши

keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY |

 0, 0 );

// Моделируем возврат клавиши в не нажатое состояние

keybd_event( VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY |

 KEYEVENTF_KEYUP, 0);

 }

}

void main()

{

  SetNumLock( TRUE );

}

 

Функция mouse_event

Функция mouse_event синтезирует движение мыши и щелчки кнопки.

Windows NT/2000/XP: Эта функция была заменена. Вместо нее используйте функцию SendInput.

Синтаксис

VOID mouse_event(      

    DWORD dwFlags,

    DWORD dx,

    DWORD dy,

    DWORD dwData,

    ULONG_PTR dwExtraInfo

);

Параметры

dwFlags

[in] Устанавливает различные аспекты движения мыши и щелчков кнопки. Этот параметр может быть некоторой комбинацией нижеследующих значений.

Значения, которые определяют состояние кнопки мыши, устанавливаются, чтобы указать изменения в статусе, но  не для непрерывных состояний. Например, если левая кнопка мыши нажимается и удерживается нажатой, устанавливается MOUSEEVENTF_LEFTDOWN, в первый момент когда левая кнопка нажата, но не для последующих действий. Точно так же MOUSEEVENTF_LEFTUP устанавливается только в начале, когда кнопка отпущена.

Вы не можете в параметре dwFlags одновременно установить и MOUSEEVENTF_WHEEL и, или MOUSEEVENTF_XDOWN, или MOUSEEVENTF_XUP, потому что они оба требуют использования поля dwData.

Значение

Предназначение

MOUSEEVENTF_ABSOLUTE

Устанавливает, что параметры  dx и dy содержат нормализованные абсолютные координаты. Если флажок не установлен, то эти параметры содержит относительные данные: изменение в позиции начиная от последнего переданного местоположения. Этот флажок может устанавливаться, или не устанавливаться, независимо от того, какая мышь или мышеподобное устройство, если таковое вообще имеется, соединено с системой. За более поздней информацией об относительном движении мыши, см. ниже в разделе Замечаний.

MOUSEEVENTF_MOVE

Устанавливает, что произошло перемещение.

MOUSEEVENTF_LEFTDOWN

Устанавливает, что нажата левая кнопка.

MOUSEEVENTF_LEFTUP

Устанавливает, что отпущена левая кнопка.

MOUSEEVENTF_RIGHTDOWN

Устанавливает, что нажата правая кнопка.

MOUSEEVENTF_RIGHTUP

Устанавливает, что отпущена правая кнопка.

MOUSEEVENTF_MIDDLEDOWN

Устанавливает, что нажата средняя кнопка.

MOUSEEVENTF_MIDDLEUP

Устанавливает, что отпущена средняя кнопка.

MOUSEEVENTF_WHEEL

Windows NT/2000/XP: Устанавливает, что переместилось колесико, если мышь имеет колесико. Величина перемещения определяется в параметре dwData.

MOUSEEVENTF_XDOWN

Windows 2000/XP: Устанавливает, что была нажата X-кнопка.

MOUSEEVENTF_XUP

Windows 2000/XP: Устанавливает, что была отпущена X-кнопка.

 

dx

[in] Устанавливает абсолютную позицию мыши по оси X или по ее величине продвижения, с тех пор, как было произведено последнее событие мыши, которая зависит от установки флажка MOUSEEVENTF_ABSOLUTE. Абсолютные данные определяются как фактическая x-координата мыши; относительные данные определяются как перемещение на определенное число мики. Мики (mickey) - это величина, на которую должна продвинуться мышь, чтобы она сообщила, что состоялось перемещение.

dy

[in] Устанавливает абсолютную позицию мыши по оси Y или по ее величине продвижения, с тех пор, как было произведено последнее событие мыши, которая зависит от установки флажка MOUSEEVENTF_ABSOLUTE. Абсолютные данные определяются как фактическая y-координата мыши; относительные данные определяются как перемещение на определенное число мики.

dwData

[in] Если dwFlags содержит MOUSEEVENTF_WHEEL, то параметр dwData устанавливает величину перемещения колесика. Положительное значение указывает на то, что колесико вращалось вперед, в сторону от пользователя; отрицательное значение указывает, что колесико вращалось назад, к пользователю. Один щелчок (прим. перевод. храповика) колесика определяется как WHEEL_DELTA, число которых - 120.

Windows 2000/XP: Если параметр dwFlags содержит MOUSEEVENTF_XDOWN или MOUSEEVENTF_XUP, то dwData определяет, какие X-кнопки нажимались или отпускались. Это значение может быть любой комбинацией ниже перечисленных флажков.

Если параметр dwFlags - не MOUSEEVENTF_WHEEL, MOUSEEVENTF_XDOWN, или MOUSEEVENTF_XUP, то dwData должен равняться нулю.

Значение

Предназначение

XBUTTON1

Устанавливается, если была нажата или отпущена первая Х-кнопка.

 XBUTTON2

Устанавливается, если была нажата или отпущена вторая Х-кнопка.

dwExtraInfo

[in] Устанавливает дополнительное значение, связанное с событием мыши. Приложение вызывает функцию GetMessageExtraInfo, чтобы получить эту дополнительную информацию.

Возвращаемое значение

У этой функции нет возвращаемого значения.

Замечания

Если мышь двигалась, то установка флажка MOUSEEVENTF_MOVE указывает, что параметры  dx и dy содержат информацию об этом движении. Информация определяется как абсолютные или относительные целочисленное значения.

Если устанавливается значение MOUSEEVENTF_ABSOLUTEdx и dy содержат нормализованные абсолютные координаты между 0 и 65 535. Процедура события преобразует эти координаты для поверхности экрана. Координата (0,0) проецируется на левый верхний угол поверхности экрана, (65535,65535) проецируется на правый нижний угол.

Если значение MOUSEEVENTF_ABSOLUTE не установлено, dx и dy определяют относительные перемещения от того, когда было произведено последнее событие мыши (последняя сообщенная позиция). Положительные значения подразумевают, что мышь перемещалась вправо (или вниз); отрицательные значения подразумевают, что мышь двигалась влево (или вверх).

Относительное движение мыши подчинено настройкам скорости мыши и уровня ускорения. Конечный пользователь устанавливает эти величины, используя программу Mouse (Мышь) в Панели управления (Control Panel). Приложение получает и устанавливает эти значения при помощи функции SystemParametersInfo.

Система применяет два теста к заданному относительному движению мыши при применении ускорения. Если указанное расстояние, или по оси x, или по оси y больше, чем первая пороговая величина мыши, и уровень ускорения мыши не является нулевым, операционная система удваивает это расстояние. Если указанное расстояние или по оси x- или по оси y- больше, чем вторая пороговая величина мыши, и уровень ускорения мыши равен двум, операционная система удваивает интервал, который получился в результате применения первого порогового теста. В соответствии с этим, для операционной системы допустимо умножать определенное как относительное движение мыши по оси x- или по оси y- до четырех раз.

Как только было применено ускорение, система масштабирует получающуюся в результате величину требуемой скорости мыши. Скорость мыши может быть в диапазоне от 1 (самая медленная) до 20 (самая быстрая) и представляет величину, на котроую переместился указатель, базируясь на расстоянии, на которое перемещается мышь. Заданное по умолчанию значение равно 10, которое не приводит к дополнительной модификации движения мыши.

Функция mouse_event используется, чтобы синтезировать события мыши прикладными программами, которым необходимо так делать. Она также используется и прикладными программами, которые должны получать больше информации от мыши, а не только о ее позиции и состоянии кнопки. Например, если изготовитель планшета хочет передавать информацию, основанную на перьевом вводе данных, своим собственным программам, он может написать динамически подключаемую библиотеку (DLL), которая связывается непосредственно с аппаратными средствам планшета, получает дополнительную информацию и сохраняет ее в очереди. DLL затем вызывает функцию mouse_event при помощи стандартной кнопки и x/y данными местоположения, наряду с параметром dwExtraInfo с каким-то указателем или индексом поставленной в очередь дополнительной информации. Когда прикладная программа нуждается в дополнительной информации, она вызывает DLL с указателем или индексом, сохраненным в dwExtraInfo, и динамически подключаемая библиотека (DLL) возвращает дополнительную информацию.

Функция SendInput

Функция SendInput синтезирует нажатия клавиши, движения  и щелчки кнопкой мыши.

Синтаксис

UINT SendInput(      

    UINT nInputs,

    LPINPUT pInputs,

    int cbSize

);

Параметры

nInputs

[in] Устанавливает число структур в массиве pInputs.

pInputs

[in] Указатель на массив структур INPUT. Каждая структура обозначает событие, которое будет вставлено во входной  поток клавиатуры или мыши .

cbSize

[in] Устанавливает размер, в байтах, структуры INPUT. Если параметр cbSize - не размер структуры INPUT, функция завершится ошибкой.

Возвращаемые значения

Функция возвращает число событий, которые она успешно вставило во входной поток мыши или клавиатуры. Если функция возвращает нуль, ввод данных был уже блокирован другим потоком.

Чтобы получить дополнительные сведения об ошибке, вызовите функцию GetLastError.

Замечания

Функция SendInput вставляет события в структуры INPUT последовательно во входной поток мыши или клавиатуры. Эти события не вставляются в промежутки другой клавиатурой или мышью между вставленными событиями ввода данных  или пользователем ( клавиатурой или мышью) или вызовами функций keybd_event, mouse_event, или другими вызовами SendInput.

Эта функция не сбрасывает текущее состояние клавиатуры. Любые клавиши, которые уже нажаты, когда функция вызывается, могут столкнуться с событиями, которые эта функция создает. Чтобы избежать этой проблемы, проверьте состояние клавиатуры при помощи функции GetAsyncKeyState и  по мере необходимости откорректируйте действия.

Структура INPUT

Структура INPUT используется функцией SendInput, чтобы сохранить информацию для синтезирования событий ввода типа нажатий клавиши, перемещения и нажатия кнопок мыши.

Синтаксис

typedef struct tagINPUT {

  DWORD type;

  union {MOUSEINPUT mi;

            KEYBOARDINPUT ki;

            HARDWAREINPUT hi;

           };

  }INPUT, *PINPUT;

Члены структуры

type

Устанавливает тип события ввода. Этот член может быть одним из нижеследующих значений.

Значение

Предназначение

INPUT_MOUSE

Это событие - событие мыши. Используйте структуру mi объединения. 

INPUT_KEYBOARD

Это событие - событие клавиатуры. Используйте структуру ki объединения. 

INPUT_HARDWARE

Windows 95/98/Me: Это событие аппаратного ввода данных, а не клавиатуры или мыши. Используйте структуру hi объединения.

mi

Структура MOUSEINPUT, которая содержит информацию об имитируемом событии  нажатия кнопки мыши.

ki

Структура KEYBDINPUT, которая содержит информацию об имитируемом событии клавиатуры.

hi

Windows 95/98/Me: Структура HARDWAREINPUT, которая содержит информацию об имитируемом событии аппаратного ввода данных, а не  клавиатуры или мыши.

Замечания

Эта структура содержит информацию идентичную той, которая  используется в списке параметров функции mouse_event или keybd_event.

 Windows 2000/XP: Флажок INPUT_KEYBOARD поддерживает методы ввода данных не клавиатуры, такое как распознавание рукописи  или речи, как будто это был текстовой ввод, используя флажок KEYEVENTF_UNICODE. Для получения дополнительной информации, см. раздел замечаний структуры KEYBDINPUT.

Структура MOUSEINPUT 

Структура MOUSEINPUT содержит информацию об имитируемом событии нажатия кнопки мыши.

Синтаксис

typedef struct tagMOUSEINPUT {

    LONG  dx;

    LONG  dy;

    DWORD  mouseData;

    DWORD  dwFlags;

    DWORD  time;

    ULONG_PTR  dwExtraInfo;

} MOUSEINPUT, *PMOUSEINPUT;

Члены структуры

dx

Устанавливает абсолютную позицию мыши или величину движения, с тех пор как было сгенерировано последнее событие нажатия мыши , в зависимости от значения члена структуры dwFlags . Абсолютные данные определяются как координата x мыши; относительные данные задаются как число пройденных пикселей.

dy

Устанавливает абсолютную позицию мыши или величину движения, с тех пор как было сгенерировано последнее событие нажатия мыши , в зависимости от значения члена структуры dwFlags . Абсолютные данные определяются как координата y мыши; относительные данные задаются как число пройденных пикселей.

mouseData

Если член структуры dwFlags содержит флажок MOUSEEVENTF_WHEEL, то параметр mouseData устанавливает величину перемещения колесика мыши. Положительное значение обозначает, что колесо вращалось вперед от пользователя; отрицательное значение обозначает то, что колесо вращалось обратно к пользователю. Один щелчок колеса определяется как WHEEL_DELTA, который равен 120.

Windows 2000/XP: Если член  структуры dwFlags не содержит флажка  MOUSEEVENTF_WHEEL, MOUSEEVENTF_XDOWN или MOUSEEVENTF_XUP, то параметр mouseData должен равняться нулю.

Если dwFlags содержит флажок  MOUSEEVENTF_XDOWN или MOUSEEVENTF_XUP, то параметр mouseData устанавливает, какие кнопки X были нажаты или отпущены. Это значение может быть любой комбинацией ниже следующее флажков.

Значение

Предназначение

XBUTTON1

Устанавливается, если первая кнопка X нажата или отпущена.

XBUTTON2

Устанавливается, если вторая кнопка X нажата или отпущена.

dwFlags

Набор битовых флажков, которые устанавливают различные виды движения мыши и щелчков кнопки. Биты в этом члене могут быть любой разумной комбинацией нижеследующих значений.

Битовые флажки, которые определяют состояние кнопки мыши, устанавливаются так, чтобы указать изменения в состоянии, в условиях непродолжительного движения. Например, если левая кнопка мыши нажата и удерживается, флажок MOUSEEVENTF_LEFTDOWN устанавливается тогда, когда сначала нажата левосторонняя кнопка , а не для последующих движений. Точно так же MOUSEEVENTF_LEFTUP устанавливается только тогда, когда кнопка сначала отпущена.

Вы не можете установить ни флажок MOUSEEVENTF_WHEEL, ни флажки или MOUSEEVENTF_XDOWN или  MOUSEEVENTF_XUP одновременно в параметре dwFlags, потому что они оба требуют использования поля mouseData .

Значение

Предназначение

MOUSEEVENTF_ABSOLUTE

Устанавливает, что члены dx и dy содержат нормализованные абсолютные координаты. Если флажок не установлен, dx и dy содержат относительные данные (изменение в позиции начиная с последней сообщенной  позиции). Этот флажок может быть установлен или не установлен, независимо от того какая мышь или другое устройство управления позицией, если  есть в наличии, связано с системой. Для дополнительной информации об относительном движении мыши, см. ниже следующее раздел Замечаний. 

MOUSEEVENTF_MOVE

Устанавливает, что перемещение произошло. 

MOUSEEVENTF_LEFTDOWN

Устанавливает, что была нажата левосторонняя кнопка. 

MOUSEEVENTF_LEFTUP

Устанавливает, что была отпущена левосторонняя кнопка. 

MOUSEEVENTF_RIGHTDOWN

Устанавливает, что была нажата правосторонняя кнопка. 

MOUSEEVENTF_RIGHTUP

Устанавливает, что была отпущена правосторонняя кнопка.

MOUSEEVENTF_MIDDLEDOWN

Устанавливает, что была нажата средняя кнопка. 

MOUSEEVENTF_MIDDLEUP

Устанавливает, что была отпущена средняя кнопка. 

MOUSEEVENTF_VIRTUALDESK

Windows 2000/XP: Преобразование  координат  в целом рабочего стола. Должен использоваться с флажком MOUSEEVENTF_ABSOLUTE

MOUSEEVENTF_WHEEL

Windows NT/2000/XP: Устанавливает, что было колесо перемещено, если мышь имеет колесо. Величина перемещения определяется в поле структуры mouseData

MOUSEEVENTF_XDOWN

Windows 2000/XP: Устанавливает, что была нажата кнопка X

MOUSEEVENTF_XUP

Windows 2000/XP: Устанавливает, что была отпущена кнопка X.

 time

Отметка времени для события, в миллисекундах. Если этот параметр - 0, система предоставит свою собственную отметку времени.

dwExtraInfo

Устанавливает дополнительное значение, связанное с событием  нажатия кнопки мыши. Приложение вызывает функцию GetMessageExtraInfo, чтобы получить эту дополнительную информацию.

Замечания

Если мышь переместилась, обозначив флажок MOUSEEVENTF_MOVE, члены dx и dy  определяют информацию об этом перемещении. Информация устанавливается как абсолютные или относительные целочисленные значения.

Если установлено значение MOUSEEVENTF_ABSOLUTE, поля структуры dx и dy содержат нормализованные абсолютные координаты между 0 и 65 535. Процедура события наносит эти координаты на поверхность отображения. Координата (0,0) наносится в левый верхний угол поверхности отображения; координата (65535,65535) наносится в  нижний правый угол. Во много экранной системе координаты наносятся  на главный монитор.

Windows 2000/XP: Если установлен флажок MOUSEEVENTF_VIRTUALDESK    координат наносятся на весь виртуальный рабочий стол.

Если значение MOUSEEVENTF_ABSOLUTE не установлено, dx и dy задают перемещение относительно предыдущего события мыши (последняя фиксируемая позиция). Положительные значения означают  перемещения мыши вправо (или вниз); отрицательные значения означают перемещение мыши влево (или вверх).

Относительное движение мыши подчиненно эффектам быстродействия мыши и порогового значения с двойного щелчка кнопкой мыши. Пользователь устанавливает эти три значения ползунком Скорость перемещения указателя (Pointer Speed) вкладки Свойств Мыши (Mouse Properties) на Панели управления (Windows). Вы можете получать и устанавливать эти значения, используя функцию SystemParametersInfo.

Система применяется два теста к заданному относительному перемещению мыши. Если определяемый интервал или по x или оси y больше, чем первое значение порога мыши, а быстродействие мыши - не нулевое, система удваивает интервал. Если заданный интервал или по оси x или по оси y больше чем второе значение порога мыши, а быстродействие мыши равно два, система удваивает интервал, который следовал из применения первого порогового теста. Таким образом это дает возможность системе  умножить заданное относительное перемещение мыши по оси x или оси y в четыре раза.

Структура KEYBDINPUT

Структура KEYBDINPUT содержит информацию об имитируемом событии клавиатуры.

Синтаксис

typedef struct tagKEYBDINPUT {

    WORD  wVk;

    WORD  wScan;

    DWORD  dwFlags;

    DWORD  time;

    ULONG_PTR  dwExtraInfo;

} KEYBDINPUT, *PKEYBDINPUT;

Члены структуры

wVk

Устанавливает код виртуальной клавиши. Код должен быть значением в диапазоне 1 - 254. Заголовочный файл Winuser.h предоставляет на каждое значение макроопределения (VK_ *). Если член структуры dwFlags  определяется как KEYEVENTF_UNICODE,  член структуры wVk должен быть 0.

wScan

Устанавливает аппаратный скэн-код для клавиши. Если член структуры dwFlags  определяется как KEYEVENTF_UNICODE, член структуры wScan определяет символ Unicode, который должен отправиться  активному приложению.

dwFlags

Устанавливает различные виды нажатия клавиши. Этот член может быть определенными комбинациями нижеследующих значений.

Значение

Предназначение

KEYEVENTF_EXTENDEDKEY

Если определено, то скэн-коду предшествует префиксный байт, который имеет величину 0xE0 (224). 

KEYEVENTF_KEYUP

Если определено, то клавиша отпускается. Если не определено, то клавиша нажимается. 

KEYEVENTF_SCANCODE

Если определено, то член структуры wScan идентифицирует клавишу, а член структуры wVk игнорируется. 

KEYEVENTF_UNICODE 

Windows 2000/XP: Если определено, то система синтезирует нажатие клавиши VK_PACKET . Параметр WVk  должен равняться нулю. Этот флажок может  быть объединен только с флажком KEYEVENTF_KEYUP. Для получения дополнительной информации, см. раздел Замечаний. 

time

Отметка времени для события, в миллисекундах. Если этот параметр равняется нулю, система предоставляет свою собственную отметку времени.

dwExtraInfo

Устанавливает дополнительное значение, связанное с нажатием клавиши. Используйте функцию GetMessageExtraInfo, чтобы получить эту информацию.

Замечания

Windows 2000/XP: Флажок INPUT_KEYBOARD поддерживает  не клавиатурные методы ввода данных такие как распознавание почерка или распознавание голоса, как будто это был текстовой ввод, используя флажок KEYEVENTF_UNICODE. Если KEYEVENTF_UNICODE устанавливается, функция SendInput отправляет сообщение WM_KEYDOWN или WM_KEYUP  в очередь сообщений активного потока с параметром wParam, равным VK_PACKET. Как только функция GetMessage или PeekMessage получает это сообщение, оно переправляется в функцию TranslateMessage, которое посылает сообщение WM_CHAR  с символом Unicode, первоначально заданным параметром wScan. Этот символ Unicode будет автоматически преобразован в соответствующее значение ANSI, если сообщение посылается к окну ANSI.

Windows 2000/XP: Установка флажка KEYEVENTF_SCANCODE определяет ввод с клавиатуры в терминах скэн-кода. Это практикуется при имитации физического нажатия клавиши, независимо от того используется или нет  клавиатура в настоящий момент. Значение виртуальной клавиши клавиши может измениться в зависимости от текущей раскладки клавиатуры или от того, что другие клавиши были нажаты, но скэн-код всегда будет тот же самый.

Структура HARDWAREINPUT

Структура HARDWAREINPUT содержит информацию об смоделированном сообщении, созданном устройством ввода данных, а  не  клавиатурой или мышью.

Синтаксис

typedef struct tagHARDWAREINPUT {

    DWORD  uMsg;

    WORD  wParamL;

    WORD  wParamH;

} HARDWAREINPUT, *PHARDWAREINPUT;

Члены структуры

uMsg

Значение, задающее сообщение, созданное  аппаратными средствами ввода.

wParamL

Устанавливает младшее слово параметра lParam  для uMsg.

wParamH

Устанавливает старшее слово параметра lParam  для uMsg.

Коды виртуальных клавиш

Нижеследующая таблица показывает названия именованных констант, шестнадцатеричные значения, и эквиваленты мыши или  клавиатуры для кодов виртуальных клавиш, используемых системой. Коды перечисляются в нарастающем порядке.

Константа

Значение 

Предназначение

VK_LBUTTON

01

Левая кнопка мыши.

VK_RBUTTON

02

Правая кнопка мыши.

VK_CANCEL

03

Обработка комбинации клавиш Control-Break.

 

VK_MBUTTON

04

Средняя кнопка мыши (трехкнопочная мышь).

VK_XBUTTON1

05

Windows 2000/XP: кнопка X1 мыши.

VK_XBUTTON2

06

Windows 2000/XP: кнопка X2 мыши.

-

07

Не определен.

VK_BACK

08

Клавиша BACKSPACE (возврата на позицию).

VK_TAB

09

Клавиша TAB (табуляции).

-

0A-0B

Зарезервированы.

VK_CLEAR

0C

Клавиша CLEAR.

VK_RETURN

0D

Клавиша ENTER (ввод).

-

0E-0F

Не определены.

VK_SHIFT

10

Клавиша SHIFT (вспомогательная).

VK_CONTROL

11

Клавиша CTRL (управления).

VK_MENU

12

Клавиша ALT (навигации по меню).

VK_PAUSE

13

Клавиша PAUSE (останов работы).

VK_CAPITAL

14

Клавиша CAPS LOCK (переключатель регистра символов).

VK_KANA

15

Редактор метода ввода  (IME)) режим Kana.

VK_HANGUEL

15

Редактор метода ввода (IME) режим Hanguel (поддерживается для совместимости; используется VK_HANGUL).

VK_HANGUL

15

Редактор метода ввода (IME) режим Hangul.

-

16

Не определен.

VK_JUNJA

17

Редактор метода ввода (IME) режим Junja

VK_FINAL

18

Редактор метода ввода (IME) заключительный режим.

VK_HANJA

19

Редактор метода ввода (IME) режим Hanja.

VK_KANJI 

 

Редактор метода ввода (IME) режим Kanji.

-

1A

Не определен.

VK_ESCAPE

1B

Клавиша ESC (отмены).

VK_CONVERT

1C

Преобразованный IME.

VK_NONCONVERT

1D

Не преобразованный IME.

VK_ACCEPT

1E

Принятый IME.

VK_MODECHANGE

1F

Запрос изменить режим IME.

VK_SPACE

20

Клавиша SPACEBAR (пробел).

VK_PRIOR

21

Клавиша PAGE UP (страницей выше).

VK_NEXT

22

Клавиша PAGE DOWN (страницей ниже).

VK_END

23

Клавиша END (в конец текста).

VK_HOME

24

Клавиша HOME (в начало текста).

VK_LEFT

25

Клавиша LEFT ARROW (стрелка влево).

VK_UP

26

Клавиша UP ARROW (стрелка вверх).

VK_RIGHT

27

Клавиша RIGHT ARROW (стрелка вправо).

VK_DOWN

28

Клавиша DOWN ARROW (стрелка вниз).

VK_SELECT

29

Клавиша SELECT (выбор).

VK_PRINT

2A

Клавиша PRINT (печать).

VK_EXECUTE

2B

Клавиша EXECUTE (исполнить).

VK_SNAPSHOT

2C

Клавиша PRINT SCREEN (печать экрана).

VK_INSERT

2D

Клавиша INS (вставить).

VK_DELETE

2E

Клавиша DEL (удалить).

VK_HELP

2F

Клавиша HELP (справка).

 

30

Клавиша 0.

 

31

Клавиша 1.

 

32

Клавиша 2.

 

33

Клавиша 3

 

34

Клавиша 4.

 

35

Клавиша 5.

 

36

Клавиша 6.

 

37

Клавиша 7.

 

38

Клавиша 8.

 

39

Клавиша 9.

-

3A-40

Не определены.

 

41

Клавиша A.

 

42

Клавиша B.

 

43

Клавиша C.

 

44

Клавиша D.

 

45

Клавиша E.

 

46

Клавиша F.

 

47

Клавиша G.

 

48

Клавиша H.

 

49

Клавиша I.

 

4A

Клавиша J.

 

4B

Клавиша K.

 

4C

Клавиша L.

 

4D

Клавиша M.

 

4E

Клавиша N.

 

4F

Клавиша O.

 

50

Клавиша P.

 

51

Клавиша Q.

 

52

Клавиша R.

 

53

Клавиша S.

 

54

Клавиша T.

 

55

Клавиша U.

 

56

Клавиша V.

 

57

Клавиша W.

 

58

Клавиша X.

 

59

Клавиша Y.

 

5A

Клавиша Z.

VK_LWIN

5B

Левая клавиша Windows (Клавиатура Microsoft® Natural® ).

VK_RWIN

5C

Правая клавиша Windows (Клавиатура Microsoft® Natural® ).

VK_APPS

5D

Клавиша приложения (Клавиатура Microsoft® Natural® ).

-

5E

Зарезервирован.

VK_SLEEP

5F

Клавиша Sleep (сна) компьютера.

VK_NUMPAD0

60

Клавиша 0 вспомогательной цифровой клавиатуры.

VK_NUMPAD1

61

Клавиша 1 вспомогательной цифровой клавиатуры.

VK_NUMPAD2

62

Клавиша 2 вспомогательной цифровой клавиатуры.

VK_NUMPAD3

63

Клавиша 3 вспомогательной цифровой клавиатуры.

VK_NUMPAD4

64

Клавиша 4 вспомогательной цифровой клавиатуры.

VK_NUMPAD5

65

Клавиша 5 вспомогательной цифровой клавиатуры.

VK_NUMPAD6

66

Клавиша 6 вспомогательной цифровой клавиатуры.

VK_NUMPAD7

67

Клавиша 7 вспомогательной цифровой клавиатуры.

VK_NUMPAD8

68

Клавиша 8 вспомогательной цифровой клавиатуры.

VK_NUMPAD9

69

Клавиша 9 вспомогательной цифровой клавиатуры.

VK_MULTIPLY

6A

Клавиша умножения (*).

VK_ADD

6B

Клавиша сложения (+).

VK_SEPARATOR

6C

Клавиша разделения (\).

VK_SUBTRACT

6D

Клавиша вычитания (-).

VK_DECIMAL

6E

Клавиша десятичная.

VK_DIVIDE

6F

Клавиша деления (/).

VK_F1

70

Клавиша F1.

VK_F2

71

Клавиша F2.

VK_F3

72

Клавиша F3.

VK_F4

73

Клавиша F4.

VK_F5

74

Клавиша F5.

VK_F6

75

Клавиша F6.

VK_F7

76

Клавиша F7.

VK_F8

77

Клавиша F8.

VK_F9

78

Клавиша F9.

VK_F10

79

Клавиша F10.

VK_F11

7A

Клавиша F11.

VK_F12

7B

Клавиша F12.

VK_F13

7C

Клавиша F13.

VK_F14

7D

Клавиша F14.

VK_F15

7E

Клавиша F15.

VK_F16

7F

Клавиша F16.

VK_F17

80

Клавиша F17.

VK_F18

81

Клавиша F18.

VK_F19

82

Клавиша F19.

VK_F20

83

Клавиша F20.

VK_F21

84

Клавиша F21.

VK_F22

85

Клавиша F22.

VK_F23

86

Клавиша F23.

VK_F24 

87

Клавиша F24.

-

88-8F

Предназначения нет.

VK_NUMLOCK

90

Клавиша NUM LOCK.

VK_SCROLL

91

Клавиша SCROLL LOCK.

 

92-96

Определяет OEM.

-

97-9F

Предназначения нет.

VK_LSHIFT

A0

Левая клавиша SHIFT.

VK_RSHIFT

A1

Правая клавиша SHIFT.

VK_LCONTROL

A2

Левая клавиша CONTROL.

VK_RCONTROL

A3

Правая клавиша CONTROL.

VK_LMENU

A4

Левая клавиша MENU

VK_RMENU

A5

Правая клавиша MENU.

VK_BROWSER_BACK

A6

Windows 2000/XP: клавиша Browser Back (просмотр вперед).

VK_BROWSER_FORWARD

A7

Windows 2000/XP: клавиша Browser Forward (просмотр назад).

VK_BROWSER_REFRESH

A8

Windows 2000/XP: клавиша Browser Refresh (обновить экран просмотра).

VK_BROWSER_STOP

A9

Windows 2000/XP: клавиша Browser Stop (остановить просмотр).

VK_BROWSER_SEARCH

AA

Windows 2000/XP: клавиша Browser Search (поиск в окне просмотра).

VK_BROWSER_FAVORITES

AB

Windows 2000/XP: клавиша Browser Favorites (предпочтительного просмотра).

VK_BROWSER_HOME 

AC

Windows 2000/XP: клавиша Browser Start и Home (эапуск брузера и на главную страницу).

VK_VOLUME_MUTE

AD

Windows 2000/XP: клавиша Volume Mute (временно выключить звук).

VK_VOLUME_DOWN

AE

Windows 2000/XP: клавиша Volume Down (понизить громкость звука).

VK_VOLUME_UP

AF

Windows 2000/XP: клавиша Volume Up (повысить громкость звука).

VK_MEDIA_NEXT_TRACK

B0

Windows 2000/XP: Клавиша Next Track (следующая дорожка).

VK_MEDIA_PREV_TRACK

B1

Windows 2000/XP: Клавиша Previous Track (предыдущая дорожка).

VK_MEDIA_STOP

B2

Windows 2000/XP: Клавиша Stop Media (останов проигрывателя).

VK_MEDIA_PLAY_PAUSE

B3

Windows 2000/XP: Клавиша Play/Pause Media (воспроизведение/пауза проигрывателя).

VK_LAUNCH_MAIL

B4

Windows 2000/XP: Клавиша Start Mail (запуск почтовой программы).

VK_LAUNCH_MEDIA_SELECT

B5

Windows 2000/XP: Клавиша Select Media (выбора медиа).

VK_LAUNCH_APP1

B6

Windows 2000/XP: Клавиша Start Application 1 (запуск приложения 1).

VK_LAUNCH_APP2

B7

Windows 2000/XP: Клавиша Start Application 2 (запуск приложения 2).

-

B8-B9

Зарезервированы.

VK_OEM_1

BA

Используется для разных знаков; он может изменяться клавиатурой.

Windows 2000/XP: для американской стандартной клавиатуры это клавиша ';:'.

VK_OEM_PLUS

BB

Windows 2000/XP: для любой страны/региона это клавиша '+'.

VK_OEM_COMMA 

BC

Windows 2000/XP: для любой страны/региона это клавиша ','.

VK_OEM_MINUS

BD

Windows 2000/XP: для любой страны/региона это клавиша '-'.

VK_OEM_PERIOD

BE

Windows 2000/XP: для любой страны/региона это клавиша '.'.

VK_OEM_2 

BF

Используется для разных знаков; он может изменяться клавиатурой.

Windows 2000/XP: для американской стандартной клавиатуры это клавиша '/?'.

VK_OEM_3

C0

Используется для разных знаков; он может изменяться клавиатурой.

Windows 2000/XP: для американской стандартной клавиатуры это клавиша '`~'.

-

C1-D7

Зарезервированы.

-

D8-DA

Предназначения нет.

VK_OEM_4

DB

Используется для разных знаков; он может изменяться клавиатурой.

Windows 2000/XP: для американской стандартной клавиатуры это клавиша '[{' .

VK_OEM_5

DC

Используется для разных знаков; он может изменяться клавиатурой.

Windows 2000/XP: для американской стандартной клавиатуры это клавиша '\|'.

VK_OEM_6

DD

Используется для разных знаков; он может изменяться клавиатурой.

Windows 2000/XP: для американской стандартной клавиатуры это клавиша ']}'.

VK_OEM_7

DE

Используется для разных знаков; он может изменяться клавиатурой.

Windows 2000/XP: для американской стандартной клавиатуры это клавиша 'одиночная кавычка/двойная кавычка'.

VK_OEM_8

DF

Используется для разных знаков; он может изменяться клавиатурой.

-

E0

Зарезервирован.

 

E1

Специальный для OEM.

VK_OEM_102

E2

Windows 2000/XP: или клавиша угловой скобки или обратный слэш (наклонная черта влево) на RT клавиатуре с 102 клавишами. 

 

E3-E4

Специальные для OEM.

VK_PROCESSKEY 

E5

Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: клавиша IME PROCESS (обработка IME). 

 

E6

Специальные для OEM.

VK_PACKET

E7

Windows 2000/XP: Используется  для перехода на символы  Unicode , как будто бы они были нажатиями клавиш. Клавиша  VK_PACKET - младшее слово 32-разрядного значения Virtual Key, используемого для не клавиатурного метода ввода данных. Подробную информацию, см. в разделе Замечания в описании KEYBDINPUT, SendInput, WM_KEYDOWN и WM_KEYUP

-

E8

Предназначения нет.

 

E9-F5

Специальные для OEM.

VK_ATTN

F6

Клавиша Attn.

VK_CRSEL

F7

Клавиша CrSel.

VK_EXSEL

F8

Клавиша ExSel.

VK_EREOF 

F9

Клавиша очистки EOF.

VK_PLAY

FA

Клавиша воспроизведения.

VK_ZOOM

FB

Клавиша увеличения/уменьшения.

VK_NONAME

FC

Зарезервировано для будущего использования.

VK_PA1

FD

Клавиша PA1.

VK_OEM_CLEAR

FE

Клавиша очистки.  

 

 

 

Hosted by uCoz