2013-08-02 3 views
0

Я использую синтаксис MASM, и я хочу, чтобы клавиша нажала клавишу, затем сохраните ее, чтобы использовать ее позже в коде, я попытался использовать: int 21h прерывание, но кажется, что он не работает под 32-битный.Управление keypress

Есть ли другой способ достичь этого?

спасибо.

+0

В чем была ваша программа? – duskwuff

+0

Windows7, 32-бит. Я забыл упомянуть, что программа основана на консоли на самом деле. –

+0

Вам нужно запустить свою программу в эмуляторе, таком как DosBox. Или вместо этого сделайте это консольным приложением Windows (что означает использование Win32 API вместо прерываний). – Michael

ответ

0

Если вы хотите переключиться на Windows, возможно, вы можете использовать функцию GetKeyboardState, чтобы узнать, нажата ли одна или несколько клавиш. Еще проще, чем использование GetKeyboardState, должно было бы что-то вроде:

.486 
.model flat,stdcall 
option casemap : none 

include \masm32\include\windows.inc 
include \masm32\include\kernel32.inc 
include \masm32\include\msvcrt.inc 
include \masm32\macros\macros.asm 

includelib \masm32\lib\kernel32.lib 
includelib \masm32\lib\msvcrt.lib 

.data? 
key dd ? 

.code 

start: 

printf("Press a key..") 
call crt__getch 
mov key,eax 
printf("\nYou pressed key number %d", key) 

invoke ExitProcess,0 

END start 
+0

call crt_getch, это было все, что мне нужно, спасибо –