Что я делаю не так - Assembler
Формулировка задачи:
Пытаюсь реализовать поиск по названию (чтоб при нахождении музыка вырубалась и наоборот, соответственно). Делаю вот такой вариант исполнения, но почему-то при нахождении процесса происходит крах моей проги. Что не так??
Вот код:
;Получаем имя процесса ;######################################################################################################### GetProcess proc LOCAL hSnapshot:dword,processmodule:PROCESSENTRY32 invoke CreateToolhelp32Snapshot, TH32CS_SNAPPROCESS,0 .if (eax != INVALID_HANDLE_VALUE) mov hSnapshot,eax mov [processmodule.dwSize],SIZEOF processmodule invoke Process32First, hSnapshot,ADDR processmodule .if (eax) @@: invoke lstrcmpi, ADDR FileName ,ADDR [processmodule.szExeFile] .if (eax == 0) push processmodule.th32ProcessID pop pid mov game_flag,1 invoke CloseHandle, hSnapshot ret .else mov game_flag,0 .endif invoke Process32Next, hSnapshot,ADDR processmodule test eax,eax jnz @B .endif invoke CloseHandle, hSnapshot .endif ret GetProcess endp ;######################################################################################################### ............................................................................................... .elseif uMsg == WM_TIMER @play: .if music_flag == 0 ; Если музыка не играет call GetProcess ; Ищем .if game_flag == 0 ; Если не нашли... cmp xm_sound, 1 je @stop .if music_flag == 0 Invoke mfmPlay, pMusic ; Врубаем музон :) mov music_flag, 1 ; Ставим флаг, что музыка выключена .endif ret .endif .endif @stop: .if music_flag == 1 ; Если музыка играет call GetProcess ; Ищем .if game_flag == 1 ; Если нашли... .if music_flag == 1 ; Ставим флаг, что музон выключен Invoke mfmPlay, 0 ; Вырубаем музон mov muz_flag, 0 .endif dec xm_sound .endif .endif
Решение задачи: «Что я делаю не так»
textual
Листинг программы
push ebp mov ebp,esp
Объяснение кода листинга программы
push ebp
- в стековую память (стек) сохраняется базовый адрес текущей области памяти (EBP).mov ebp,esp
- в EBP записывается адрес ESP (то есть, адрес вершины стека).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д