imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 01.01.2009, 23:17     # 1
Bad System
Newbie
 
Аватар для Bad System
 
Регистрация: 27.05.2008
Сообщения: 24

Bad System Путь к славе только начался
Помогите плиз подправить прогу на 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
Bad System вне форума  
Старый 02.01.2009, 09:52     # 2
Georgen
Moderator
 
Аватар для Georgen
 
Регистрация: 16.02.2004
Адрес: 02RU
Пол: Male
Сообщения: 1 574

Georgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen Гипербог
Georgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen ГипербогGeorgen Гипербог
Цитата:
Сообщение от Bad System Посмотреть сообщение
push MB_OK
Я понимаю, что речь идет о переменной для функции MessageBeep.
Цитата:
function MessageBeep(uType:word) : boolean; Параметр uType указывает воспроизводимый звук, как идентификатор раздела [sounds] реестра, в котором записаны звуки, сопровождающие те, или иные события Windows. Параметр uType может принимать следующие значения:

MB_ICONASTERISK - проигрывает звук "Звездочка" (SystemAsterisk)
MB_ICONEXCLAMATION - проигрывает звук "Восклицание" (SystemExclamation)
MB_ICONHAND - проигрывает звук "Критическая ошибка" (SystemHand)
MB_ICONQUESTION - проигрывает звук "Вопрос" (SystemQuestion)
MB_OK - проигрывает звук "Стандартный звук" (SystemDefault)
Надо отметить, что эта функция воспроизводит звук асинхронно, т.е. во время воспроизведения звука Ваше приложение продолжает работать. После запроса звука функция MessageBeep передает управление вызвавшей ее функции.

Если невозможно воспроизвести указанный звук, то функция попытается воспроизвести стандартный системный звук, установленный по умолчанию, если и это невозможно, то будет воспроизведен стандартный сигнал через динамик.
__________________
Пусть тебе приснится пъяный зайчик с пистолетом
Georgen вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:25.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.