Чтобы имитировать непрерывную серию событий пользовательского ввода, используйте функцию SendInput. Функция принимает три параметра. Первый параметр, cInputs, обозначает число событий ввода, которые она должна имитировать. Второй параметр, rgInputs, является массивом структур INPUT, каждая из которых описание типа события ввода и дополнительная информации об этом событии. Последний параметр, cbSize, принимает размер структуры INPUT, в байтах.
Работа функции SendInput заключается в том, чтобы посредством ввода имитировать серию событий ввода во входной поток устройства. Это действие является подобным неоднократному вызову функции keybd_event или mouse_event , за исключением того, что система гарантирует, что никакие другие события ввода не смешиваются с имитируемыми событиями. Когда вызов завершается, возвращаемое значение обозначает число событий ввода, которые успешно исполнены. Если это значение равно нулю, то ввод данных блокируется.
Функция SendInput не сбрасывает текущее состояние клавиатуры. Поэтому, если пользователь имеет какие-либо нажатые клавиши, когда Вы вызываете эту функцию, они могут помешать событиям, которые эта функция создает. Если Вы обеспокоены этими возможными помехами, проверьте состояние клавиатуры функцией GetAsyncKeyState и исправьте как необходимо.