ПРостенькая под Win32 не работает у меня, нужна помощь

Тема в разделе "WASM.WIN32", создана пользователем tahir, 28 мар 2009.

  1. tahir

    tahir New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2009
    Сообщения:
    22
    Всем привет!
    Нужно чтоб выход был только после нажатия ESC,
    Приложение консольное
    компилю так
    tasm32 /ml win.asm
    tlink32 -ap win.obj

    .386P
    .MODEL FLAT, STDCALL
    EXTERN GetStdHandleA:Near
    EXTERN GetCommandLineA:NEAR
    EXTERN GetStdHandle:NEAR
    EXTERN WriteConsoleA:NEAR
    EXTERN ReadConsoleInputA:NEAR

    EXTERN ExitProcess:NEAR

    _INPUT_RECORD STRUC
    bKeyDown dw ?
    wRepeatCount dw ?
    wVirtualKeyCode dw ?
    wVirtualScanCode dw ?
    uChar dw ? ;dw или db ?
    ControlKeyState dw ? ;dw или db ?


    MousePosition dw ?
    ButtonState dw ?
    ControlKeyState dw ?
    EventFlags dw ?
    SHORT_X db ?
    SHORT_Y db ?
    CommandId dw ?
    bSetFocus dw ? ;reserv
    _INPUT_RECORD ENDS

    includelib import32.lib

    _DATA SEGMENT DWORD PUBLIC USE32 'DATA'
    PUTH DB 260 DUP (0)
    SIZE_PUTH DD 0
    DESK DD 0
    AAA1 DD 0
    CONSOLE DD -11
    CCC DD -10
    SSK DD ?
    BUF DW 0

    INPUT_RECORD _INPUT_RECORD <?>

    _DATA ENDS
    _TEXT SEGMENT DWORD PUBLIC USE32 'CODE'

    START:

    PUSH CONSOLE
    CALL GetStdHandle
    MOV [CONSOLE],EAX

    PUSH CCC
    CALL GetStdHandle
    MOV [CCC],EAX

    LLL1:
    PUSH OFFSET SSK
    PUSH 1
    PUSH OFFSET INPUT_RECORD
    PUSH CCC

    CALL ReadConsoleInputA
    int 3

    CMP [wVirtualScanCode],13h
    JNE LLL1


    PUSH 0
    CALL ExitProcess

    EXIT:

    RET
    _TEXT ENDS
    END START
     
  2. zaqer

    zaqer New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2008
    Сообщения:
    22
    Описание структур:
    Код (Text):
    1. FOCUS_EVENT_RECORD STRUCT
    2.   bSetFocus  DWORD      ?
    3. FOCUS_EVENT_RECORD ENDS
    4.  
    5. MENU_EVENT_RECORD STRUCT
    6.   dwCommandId  DWORD      ?
    7. MENU_EVENT_RECORD ENDS
    8.  
    9. COORD STRUCT
    10.   x  WORD      ?
    11.   y  WORD      ?
    12. COORD ENDS
    13.  
    14. WINDOW_BUFFER_SIZE_RECORD STRUCT
    15.   dwSize  COORD <>
    16. WINDOW_BUFFER_SIZE_RECORD ENDS
    17.  
    18. MOUSE_EVENT_RECORD STRUCT
    19.   dwMousePosition       COORD <>
    20.   dwButtonState         DWORD      ?
    21.   dwControlKeyState     DWORD      ?
    22.   dwEventFlags          DWORD      ?
    23. MOUSE_EVENT_RECORD ENDS
    24.  
    25. KEY_EVENT_RECORD STRUCT
    26.   bKeyDown          DWORD ?
    27.   wRepeatCount      WORD ?
    28.   wVirtualKeyCode   WORD ?
    29.   wVirtualScanCode  WORD ?
    30.   UNION
    31.     UnicodeChar     WORD ?
    32.     AsciiChar       BYTE ?
    33.   ENDS
    34.   dwControlKeyState DWORD ?
    35. KEY_EVENT_RECORD ENDS
    36.  
    37. INPUT_RECORD STRUCT
    38.   EventType WORD ?
    39.   UNION
    40.     KeyEvent                KEY_EVENT_RECORD            <>
    41.     MouseEvent              MOUSE_EVENT_RECORD          <>
    42.     WindowBufferSizeEvent   WINDOW_BUFFER_SIZE_RECORD   <>
    43.     MenuEvent               MENU_EVENT_RECORD           <>
    44.     FocusEvent              FOCUS_EVENT_RECORD          <>
    45.   ENDS
    46. INPUT_RECORD ENDS
     
  3. zaqer

    zaqer New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2008
    Сообщения:
    22
    EventType в структуре INPUT_RECORD в твоем случае должен быть установлен в значение: KEY_EVENT = 001.
     
  4. tahir

    tahir New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2009
    Сообщения:
    22
    Спасибо.
    Чего то не получается, целый день парился, блин туго, под Дос как хорошо было
     
  5. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    tahir
    1. Под отладчиком смотрел?
    2. Вот эта строчка что означает? :
    CMP [wVirtualScanCode],13h ?
    wVirtualScanCode - член структуры? Разве это не надо указываеть?
     
  6. tahir

    tahir New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2009
    Сообщения:
    22
    может целиком файл кинуть
     
  7. Jeka_T

    Jeka_T New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2009
    Сообщения:
    1
    CMP [wVirtualScanCode],13h
    13h - код клавиши Enter, у ESC - 27h
     
  8. Wisder

    Wisder New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    30
    Скорее всего 27d (1Bh)
     
  9. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    без "h", 13 и 27