Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
#1

Hook клавиатуры - C++

11.06.2010, 23:21. Просмотров 1883. Ответов 6
Метки нет (Все метки)

Приветствую всех,
подскажите мне, пожалуйста, как установить хук клавиатуры на кнопку F12?
С хуками пытался разобраться... но не особо получается... Желательно по-подробнее.

Заранее благодарю.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
12.06.2010, 00:53     Hook клавиатуры #2
отлавливайте эвент для VK_F12.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
HOOKPROC KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
    if(!(lParam >> 31 & 1))//нажатие
    {
        if (wParam == VK_F12)
            Beep(1000, 100);
    }
    else //отпускание
    {
        if (wParam == VK_F12)
            Beep(100, 100);
    }
    return 0;
}

Что именно не получается, уточните
SKDzR
0 / 0 / 0
Регистрация: 10.01.2010
Сообщений: 91
12.06.2010, 10:00  [ТС]     Hook клавиатуры #3
мне вот надо сделать такую вещь, чтобы клавишу F12 нажал (нажал-отпустил) - пошли действия, ещё одно нажатие клавиши - действия прекращаются
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.06.2010, 10:33     Hook клавиатуры #4
Цитата Сообщение от M128K145 Посмотреть сообщение
if(!(lParam >> 31 & 1))
M128K145, смущают магические числа. Есть же флаги специальные. Вот для отпускания:
C++
1
if(nCode == HC_ACTION && !(HIWORD(lParam) & KF_UP))
kazak
 Аватар для kazak
3030 / 2351 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
12.06.2010, 10:35     Hook клавиатуры #5
SKDzR, добавляешь в обработку нажатия флаг, при каждом нажатии меняешь его состояние, и в зависимости от его значения выполняешь или одно или другое действие.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
12.06.2010, 11:03     Hook клавиатуры #6
CyBOSSeR, просто 31 бит всегда отвечает за нажатие, поэтому это не магическое число в полном смысле этого выражения
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2010, 11:41     Hook клавиатуры
Еще ссылки по теме:

C++ Winsock2 hook
строка с клавиатуры C++
Hook клавиатуры и мыши C++
C++ Hook не работает
Ввод с клавиатуры C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
12.06.2010, 11:41     Hook клавиатуры #7
M128K145, дело в том, что ты знаешь об этом, а кто-то нет. И этому кому-то будет сложно понять, что же происходит на самом деле.
Знания нужно выражать в наиболее явной форме, использование символических имен как раз таки позволяет это сделать.
Yandex
Объявления
12.06.2010, 11:41     Hook клавиатуры
Ответ Создать тему
Опции темы

Текущее время: 16:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru