Пятница, 22 Ноября 2024, 08:11

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Ожидание нажатия клавиши
DeswingДата: Вторник, 31 Декабря 2013, 14:40 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Как такое сделать? Ну, например: если нажата стрелочка вверх, то вызвать такую-то ф-цию... Если вправо - такую... И т.п...

Добавлено (31.12.2013, 14:40)
---------------------------------------------
P.S. старенький TASM, но не суть важно

wcptДата: Воскресенье, 05 Января 2014, 10:16 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
http://spike.scu.edu.au/~barry/interrupts.html#ah08
вот тут ф-ции прерывания 21h, там много ф-ций для ввода.
также можно использовать ф-цию bios 00 прерывания 16h, в al помещается скан-код клавиши:
Код
(...)
xor ah,ah
int 16h
cmp al,'Y'
jnz short @f
call FuncToCall
@@:
(...)


Сообщение отредактировал wcpt - Воскресенье, 05 Января 2014, 10:29
AkyltistДата: Понедельник, 13 Января 2014, 09:36 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
Цитата Deswing ()
Как такое сделать? Ну, например: если нажата стрелочка вверх, то вызвать такую-то ф-цию... Если вправо - такую... И т.п...

Тип приложения стоило бы указать, консольное или окно. Систему: Dos или Win (на тасме можно много под что писать, если знать как).

FASM + WinApi:
Код
proc WindowProc uses ebx esi edi, hwnd,wmsg,wparam,lparam
          cmp     [wmsg], WM_KEYDOWN  ; событие посылается окну если нажата кнопка
          je      .wmKeydown                    ; если событие действительно от клавиатуры то переходим

          ;
          ; - тут куча других проверок событий (WM_SETFOCUS, WM_KILLFOCUS, WM_CREATE и тп.)
          ;

    .wmKeydown:
          mov     eax, [wparam]  ; заносим в регистр

          cmp     eax, VK_ESCAPE  ; сравниваем, 27 - клавиши ESC
          ; call    your_function - вызываешь тут ту функцию какую надо
          invoke  MessageBox,NULL,_keyb,_event,MB_ICONINFORMATION+MB_OK ; визуальное подтверждение нажатия
          xor     eax,eax ; привычка чистить за собой
          ret
endp
          ;
          ; - тут еще код до секции .data
          ;

    _keyb  TCHAR 'ESC PRESS.',0
    _event TCHAR 'Event.',0    


Полный код демки и скомпилированная версия

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг