![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Townsmen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.7.2011 Репутация: нет Всего: 1 |
Есть консольное приложение, оно реагирует на нажитие стрелок вверх или низ но только тогда когда окно консоли активировано. Код нашол на этом форуме
Как сделать что бы консоль реагировала на нажатие стрелок вверх или низ даже тогда, когда я работаю в другом окне и нажимаю на клавиши? |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
Тебе нужно ловить сообщения от ОС с помощью SetWindowsHookEx с параметром WH_KEYBOARD. Тут есть пример.
Это сообщение отредактировал(а) Cheloveck - 4.6.2012, 01:45 -------------------- ![]() |
|||
|
||||
| Townsmen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.7.2011 Репутация: нет Всего: 1 |
что-то я не могу разобраться как должна работать эта функция SetWindowsHookEx взял часть кода с наведенного примера, вот что у меня получилось:
я так понял когда жмеш любую клавишу на клавиатуре должна срабатывать функция KeyboardProc ? или я что-то нетак делаю? |
|||
|
||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
Почему ноль? http://stackoverflow.com/a/454503 В случае, если вызов происходит из *.exe файла мы получаем
err = 1428, что означает
Это сообщение отредактировал(а) Cheloveck - 4.6.2012, 12:56 -------------------- ![]() |
||||
|
|||||
| Townsmen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.7.2011 Репутация: нет Всего: 1 |
HMODULE hInstance - дескриптор экземпляра прикладной программы
это нужно указать дискриптор програмы в которой я буду работать, что бы консольное приложение ловило сообщения этой програмы ( клавиши) ? |
|||
|
||||
| Cheloveck |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 3 Всего: 32 |
Не помогает, нужно поместить в DLL, по всей видимости -------------------- ![]() |
||||
|
|||||
| Townsmen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.7.2011 Репутация: нет Всего: 1 |
я с DLL еще не работал, незнаю как их подключать и как создавать их.
Вот нашол код где SetWindowsHookEx работает без DLL http://forum.vingrad.ru/forum/topic-343733...okex/index.html |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Можно и без длл. GetAsyncKeyState возвращает текущее состояние клавиши (нажата/отпущена), не зависимо от активности приложения. |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Используй сообщение WM_INPUT для получения нажатий.
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| Townsmen |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.7.2011 Репутация: нет Всего: 1 |
Спасибо всем большое за помощь! Воспользовался GetAsyncKeyState как раз то что надо
Пример кода, может кому то пригодится:
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |