Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.93/121: Рейтинг темы: голосов - 121, средняя оценка - 4.93
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033

Хук клавиатуры - как получить код нажатой клавиши

29.06.2012, 21:39. Показов 24863. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа делаю хук на клавиатуру,вроде бы и работает(при нажатии на клавишу показывает),но есть одно но !!! не могу получить код нажатой клавиши , вот код -
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <windows.h>
 
// ôóíêöèÿ âõîæäåíèé ïðîãðàììû WinMain
int CALLBACK KeyboardProc(int nCode, DWORD wParam, DWORD lParam)
{
     
  char b[100]={0};
  int u=0;
 
 switch(wParam)
  { 
               
  case WM_KEYUP:
         
  if( GetAsyncKeyState(13) ){ 
      MessageBox(NULL, "Áûëà íàæàòà êëàâèøà ENTER" , "", MB_OK);
                                                                   }
  u = GetAsyncKeyState(wParam);
  
 itoa(u,b,10);
 
     MessageBox(NULL, b , "", MB_OK);
   
   break;
  
  default:
  
      break;
  
  }
 
 return 0;
}
 
int APIENTRY WinMain(HINSTANCE hInstance,
             HINSTANCE         hPrevInstance,
             LPSTR             lpCmdLine,
             int               nCmdShow)
{
 
  SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)&KeyboardProc, GetModuleHandle(NULL), 0);
  // öèêë ñîîáùåíèé ïðèëîæåíèÿ
 
  MSG msg = {0};    // ñòðóêòóðà ñîîáùåíèÿ
  int iGetOk = 0;   // ïåðåìåííàÿ ñîñòîÿíèÿ
  while ((iGetOk = GetMessage(&msg, NULL, 0, 0 )) != 0) // öèêë ñîîáùåíèé
  {
    if (iGetOk == -1) return 3;  // åñëè GetMessage âåðíóë îøèáêó - âûõîä
    TranslateMessage(&msg);    
    DispatchMessage(&msg);
  }
  return 0;  // âîçâðàùàåì êîä çàâåðøåíèÿ ïðîãðàììû
}
И что самое интересное 14 строчка работает нормально,т.е. программа распознаёт код клавиши 13 , но вот показывать какая клавиша была нажата отказывается , что я делаю не так ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.06.2012, 21:39
Ответы с готовыми решениями:

Как определить код нажатой клавиши?
LRESULT CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam) как определить код нажатой клавиши в этой функции?

Получить код нажатой клавиши без ожидания ввода в консоли
Задание сделать консольный арканоид. Естественно, что нужно получить управление и при этом игра должна продолжать идти, если игрок ничего...

прога, которая по нажатой клавише выводит ascii - код символа это клавиши или scan - код самой клавиши.
написать программу, которая по нажатой клавише выводит ascii - код символа этой клавиши или scan - код самой клавиши. осуществите вывод в...

20
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
20.05.2021, 10:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Bluefox2000 Посмотреть сообщение
в какой файл этот участок кода нужно вставить для 17 студии
это не участок кода, а целая готовая программа.
открываешь студию, создаёшь пустой проект, создаёшь cpp файл и копируешь туда весь код, нажимаешь F6 для компиляции и F5 для запуска, радуешься своей первой копипастной программе.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.05.2021, 10:56

Как передать переменной значение нажатой клавиши с клавиатуры?
есть бесконечный цикл, после ввода структуры, выходит сообщение добавить еще одного человека ? если да то дальше цикл продолжить, если нет...

Как получить имя нажатой клавиши
Может кто занет, есть ли какая-нибудь функция которая возвращает по коду нажатой клавиши ее название? Например, была нажат ESC - мы...

Код нажатой клавиши вывести как знак (буква, цифра)
Доброго времени суток. По нажатию кнопки вызывается функция,которой передается код нажатой клавиши. void menu_control(WORD...

Как получить код нажатой клавиши
Здравствуйте ! У меня такая проблема. Загружаю страничку и мне нужно, чтобы любые нажатые клавиши обрабатывались в опред функции. ...

Как получить код нажатой клавиши в Lotus
Как получить key code presseВозможно как то с помощю Javascriзе Киньте код и обясните куда его вставлять


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru