sooqua Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Вот допустим перехват нажатия ЛКМ:cmp [msg],WM_LBUTTONDOWNМне надо сделать перехват ESCAPEпробовал так:cmp [msg],WM_ESCAPEи так:cmp [msg],WM_ESPACEDOWNи так:cmp [msg],WM_ESCDOWNи сяк:cmp [msg],WM_ESCи даже так:cmp [msg],WM_LESCDOWN ; типо left escape xDИскал таблицу всех WM_ комманд в гугле, не нашел....Можно ли использовать таблицу ASCII для перехвата нажатий кнопок? Хоть она у меня есть) Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Одна проблема - [это] Virtual Key Codes, VK, т.е. VK_ESCAPE. Ссылка на комментарий Поделиться на другие сайты Поделиться
sooqua Опубликовано 30 мая, 2012 Автор Поделиться Опубликовано 30 мая, 2012 Одна проблема - [это] Virtual Key Codes, VK, т.е. VK_ESCAPE. Ну каак ты это находишь? xDСпасибо))Сделал такcmp [msg],VK_ESCAPEje .wmcloseНе робит ;( Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Дык а что делать должно? У тебя - прыгает на выход.Ой не-не-не, стоп!invoke GetAsyncKeyState,VK_ESCAPEcmp eax,0je .wmcloseТипа, по таймеру проверяй и всё. Работать будет, только что проверил. Ссылка на комментарий Поделиться на другие сайты Поделиться
sooqua Опубликовано 30 мая, 2012 Автор Поделиться Опубликовано 30 мая, 2012 Работать будет, только что проверил.Не знаю, у меня сразу вылетает ( Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Дык он и должен вылетать, ты .wmclose замени чем-нибудь другим. Не знаю, MessageBox. Напомню, .wmclose тупо закрывает диалоговое окно:.wmclose:pop edi esi ebxinvoke EndDialog,[hwnddlg],0 Ссылка на комментарий Поделиться на другие сайты Поделиться
sooqua Опубликовано 30 мая, 2012 Автор Поделиться Опубликовано 30 мая, 2012 Дык он и должен вылетать, ты .wmclose замени чем-нибудь другим. Не знаю, MessageBox. Напомню, .wmclose тупо закрывает диалоговое окно:.wmclose:pop edi esi ebxinvoke EndDialog,[hwnddlg],0Так мне и надо чтоб закрывало окно.. Но только по escape, а он сразу вылетает, как только форма загрузитсяВот я дебил)))) Всё понял спс)Надо ж было так: invoke GetAsyncKeyState,VK_ESCAPE cmp eax,0 jne .wmcloseА я получается спрашивал если нажата escape и если не нажата то закрыть окно Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Э-э-э... Покажи весь код. Ссылка на комментарий Поделиться на другие сайты Поделиться
sooqua Опубликовано 30 мая, 2012 Автор Поделиться Опубликовано 30 мая, 2012 Э-э-э... Покажи весь код.Зачем?) Всё и так ясноinvoke GetAsyncKeyState,VK_ESCAPEcmp eax,0je .wmcloseЭтот код смотрит если не нажата escape то выйти, а надо было наоборот - если НАЖАТА escape Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Почему ж у меня работает? Может, тебя ещё [вот это] событие заинтересует. А-ля:cmp [msg], WM_KEYDOWN*тут надо сравнить wParam с нужной VK и что-нибудь сделать* Ссылка на комментарий Поделиться на другие сайты Поделиться
sooqua Опубликовано 30 мая, 2012 Автор Поделиться Опубликовано 30 мая, 2012 Почему ж у меря работает? О.О как?))Ну давай разберём))invoke GetAsyncKeyState,VK_ESCAPE ; выполняет функцию, была ли нажата escape во время её выполнения, \ ; результат попадает в регистр eax (0 - если НЕ нажата, и наверное 1 если нажата =)cmp eax,0 ; смотрит, если в eax 0 (т.е. НЕ нажата)je .wmclose ; и если НЕ нажата, то прыгнуть на функцию закрытия. Т.е программа с таким кодом будет работать только если зажать ESC Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 30 мая, 2012 Поделиться Опубликовано 30 мая, 2012 Тьфу, да, как-то я по-диагонали читал. Вот твой же код:.timer: invoke GetAsyncKeyState,VK_ESCAPE cmp eax,0 je .condition1 jmp .func1ON .condition1: invoke GetAsyncKeyState,VK_F2 cmp eax,0 je .finish jmp .func1OFF ret .func1ON: invoke MessageBox,NULL,"ON","TEST",MB_OKjmp .finish.func1OFF:......jmp .finish...Работает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения