Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include masm32rt.inc
- MENUITEM struct
- coord COORD {?, ?}
- text BYTE 50 dup(0)
- MENUITEM ends
- .data
- StdHandle DWORD ?
- StdInput DWORD ?
- menus MENUITEM {{50, 11}, "1. File "},
- {{50, 12}, "2. Edit "},
- {{50, 13}, "3. Tools "},
- {{50, 14}, "4. Welp "},
- {{50, 15}, "5. Exit "}
- menu_count dd lengthof menus
- Selected dd 0
- .code
- start:
- invoke GetStdHandle, STD_OUTPUT_HANDLE
- mov StdHandle, eax
- invoke GetStdHandle, STD_INPUT_HANDLE
- mov StdInput, eax
- xor esi, esi
- .while TRUE
- xor ecx, ecx
- xor edi, edi
- .while ecx < menu_count
- push ecx
- invoke SetConsoleCursorPosition, StdHandle, DWORD PTR menus[edi].MENUITEM.coord
- pop ecx
- push ecx
- .if ecx == Selected
- invoke SetConsoleTextAttribute, StdHandle, 0a0h
- .else
- invoke SetConsoleTextAttribute, StdHandle, 00ah
- .endif
- invoke StdOut, addr menus[edi].MENUITEM.text
- add edi, sizeof(MENUITEM)
- pop ecx
- inc ecx
- .endw
- call getch
- mov ebx, eax
- .if bl == 'S' || bl == 's'
- mov eax, Selected
- inc eax
- .if eax > 4
- mov eax, 0
- .endif
- mov Selected, eax
- .elseif bl == 'W' || bl == 'w'
- mov eax, Selected
- .if eax == 0
- mov eax, 4
- .else
- dec eax
- .endif
- mov Selected, eax
- .elseif bl == VK_RETURN
- mov eax, Selected
- .if eax == 4
- invoke ExitProcess, 0
- .else
- mov ebx, eax
- invoke SetConsoleTextAttribute, StdHandle, 0Ch
- invoke SetConsoleCursorPosition, StdHandle, 0009002Dh
- mov eax, Selected
- xor edi, edi
- .while eax
- add edi, sizeof(MENUITEM)
- dec eax
- .endw
- printf("Selected: %s ", addr menus[edi].MENUITEM.text)
- .endif
- .endif
- invoke Sleep, 50
- .endw
- getkey
- invoke ExitProcess, 0
- getch Proc
- LOCAL lpBuffer:INPUT_RECORD
- LOCAL lpRead:DWORD
- invoke ReadConsoleInput, StdInput, addr lpBuffer, 1, addr lpRead
- .if (lpBuffer.EventType==KEY_EVENT) && lpBuffer.KeyEvent.bKeyDown
- movzx eax, lpBuffer.KeyEvent.UnicodeChar
- movzx edx, lpBuffer.KeyEvent.wVirtualKeyCode
- .else
- xor eax, eax
- xor edx, edx
- .endif
- ret
- getch endp
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement