imho.ws |
![]() |
![]() |
![]() |
# 1 |
Newbie
Регистрация: 27.05.2008
Сообщения: 24
![]() |
Помогите плиз подправить прогу на Assembler
Есть прога(текст ниже)...Она издает гудок при нажатии каждой 2 кропки,необходимо чтобы при нажатии каждой 2 клавиши она издавала щелчек.Подскажите где подправить и что
.386 .model flat, stdcall option casemap:none ;подключаемые модули include c:\masm32\include\windows.inc include c:\masm32\include\user32.inc include c:\masm32\include\kernel32.inc include c:\masm32\include\gdi32.inc ;подключаемые библиотеки includelib c:\masm32\lib\user32.lib includelib c:\masm32\lib\kernel32.lib includelib c:\masm32\lib\gdi32.lib WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD WndProc PROTO :DWORD,:DWORD,:DWORD,:DWORD ;Инициализация переменных .data szDisplayName DB "Курсовая СПО Иванюк Дмитрий Иванович",0 CommandLine DD 0 hWnd DD 0 hInstance DD 0 szClassName DB "Demo_Class", 0 sTitle DB "Введите символ", 0 sMsg DB "Вы ввели вторую букву : " cll DB ?, 0 ;переменная хранящая введенный символ koll DB 0 .code start: push NULL call GetModuleHandle mov hInstance, EAX call GetCommandLine mov CommandLine, EAX push SW_SHOWDEFAULT push CommandLine push NULL push hInstance call WinMain push EAX call ExitProcess WinMain proc hInst :DWORD, hPrevInst :DWORD, CmdLine :DWORD, CmdShow :DWORD ;локальные переменные процедуры LOCAL wc :WNDCLASSEX LOCAL msg :MSG ;инициализация окна mov wc.cbSize, sizeof WNDCLASSEX mov wc.style, CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc, offset WndProc mov wc.cbClsExtra, NULL mov wc.cbWndExtra, NULL push hInst pop wc.hInstance mov wc.hbrBackground, COLOR_BTNFACE+9 mov wc.lpszMenuName, NULL mov wc.lpszClassName, offset szClassName invoke LoadIcon, NULL, IDI_APPLICATION mov wc.hIcon, EAX invoke LoadCursor, NULL, IDC_ARROW mov wc.hCursor, EAX mov wc.hIconSm, 0 invoke RegisterClassEx, ADDR wc invoke CreateWindowEx, WS_EX_OVERLAPPEDWINDOW, ADDR szClassName, \ ADDR szDisplayName, WS_OVERLAPPEDWINDOW, \ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, \ CW_USEDEFAULT, NULL, NULL, hInst, NULL mov hWnd, EAX invoke ShowWindow, hWnd, SW_SHOWNORMAL invoke UpdateWindow, hWnd ;______________________ StartLoop: push 0 push 0 push NULL lea EAX, msg push EAX call GetMessage cmp EAX, 0 je ExitLoop lea EAX, msg push EAX call TranslateMessage lea EAX, msg push EAX call DispatchMessage jmp StartLoop ExitLoop: mov EAX,msg.wParam ret WinMain endp ;_____________________ WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD, LOCAL hdc :HDC LOCAL ps :PAINTSTRUCT cmp uMsg, WM_PAINT jne next_1 invoke BeginPaint, hWnd, ADDR ps mov hdc, EAX lea EDX, ps push EDX push hWnd call EndPaint ret ;получение и обработка клавиш next_1: cmp uMsg, WM_CHAR jne next_2 mov EAX,wParam mov cll, AL ;возврат данных для окна ;проверка какая по счету буква cmp koll, 0 jz next_12 cmp koll, 1 jz next_11 next_11: mov koll, 0 jmp next_13 next_12: mov koll, 1 jmp next_2 next_13: push MB_OK push offset sTitle push offset sMsg push 0 call MessageBeep ;возпроизводит звук если messagebox то выводит окно ret ;вывод и закрытие окна по сигналу next_2: cmp uMsg, WM_DESTROY jne next_3 push NULL call PostQuitMessage xor EAX, EAX ret next_3: push lParam push wParam push uMsg push hWin call DefWindowProc ret WndProc endp end start |
![]() |
![]() |
# 2 | |
Moderator
Регистрация: 16.02.2004
Адрес: 02RU
Пол: Male
Сообщения: 1 574
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я понимаю, что речь идет о переменной для функции MessageBeep.
Цитата:
__________________
Пусть тебе приснится пъяный зайчик с пистолетом ![]() |
|
![]() |