Blog. Just Blog

Эмуляция нажатия мультимедийных клавиш на клавиатуре

18.06.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
В статье про обработку мультимедийных кнопок я немного коснулся эмуляции их нажатий. Там эмуляция была направлена напрямую в оболочку, сейчас же я расскажу, как выполнять такое действие полноценно, с учетом интересов всех запущенных приложений. Начнем с эмуляции пользовательского ввода с помощью функции SendInput.

При всей моей любви к FASM, просто убивает скудность его инклудов. Похоже, что наполнение их данными остановилось на Win2000, а если захочется что-нибудь чуть новее, то все, добро пожаловать в MSDN. И хорошо, если структура окажется на пять-десять записей. Вот и сейчас нам придется самостоятельно описать структуру INPUT и обозначить коды мультимедийных клавиш.
  1. struct MOUSEINPUT
  2.         dx          dd ?
  3.         dy          dd ?
  4.         mouseData   dd ?
  5.         dwFlags     dd ?
  6.         time        dd ?
  7.         dwExtraInfo dd ?
  8. ends
  9.  
  10. struct KEYBDINPUT
  11.         wVk         dw ?
  12.         wScan       dw ?
  13.         dwFlags     dd ?
  14.         time        dd ?
  15.         dwExtraInfo dd ?
  16. ends
  17.  
  18. struct HARDWAREINPUT
  19.         uMsg        dd ?
  20.         wParamL     dw ?
  21.         wParamH     dw ?
  22. ends
  23.  
  24. struct INPUT
  25.         type        dd ?
  26.         union
  27.             mi      MOUSEINPUT
  28.             ki      KEYBDINPUT
  29.             hi      HARDWAREINPUT
  30.         ends
  31. ends
  32.  
  33. INPUT_KEYBOARD = 1
  34.  
  35. VK_VOLUME_UP   = 0xAF
  36. VK_VOLUME_DOWN = 0xAE
  37. VK_LAUNCH_APP2 = 0xB7
Структура INPUT задана через union, так как в зависимости от типа использования, внутри нее будет структура с разным количеством и разрядностью полей. В нашем случае будет эмуляция только клавиатурного ввода, но на будущее могут пригодиться и другие структуры.

Читать статью целиком »
Просмотров: 229 | Комментариев: 2

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2020
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 1 (0.0113 сек.) / Память: 5 Mb
Наверх