|
12 / 10 / 3
Регистрация: 31.10.2017
Сообщений: 126
|
|||||||||||||||||||||
Перехват клавиатуры Win32API03.11.2018, 18:48. Показов 1858. Ответов 3
Вообщем требуется решить такую задачу. Моя программа(Автокликер) должна начать перехватывать клавиатуру после нажатия горячей комбинации Ctrl+Shift+Alt+Z(будет обрабатывать цифры 0-9 и клавишу Enter, ПРИЧЁМ ГЛОБАЛЬНО, ТО ЕСТЬ НЕ ЗАВИСИМО В ФОКУСЕ МОЯ ПРОГРАММА ИЛИ НЕТ!), это нужно для того чтобы считать новый интервал кликов (ну чтобы настройки каждый раз не открывать), обработка и создание такой горячей клавиши есть, вызываю RegisterHotKey, а в окне ловлю сообщение WM_HOTKEY, с этим всё понятно, с этим проблем нет. А вот с перехватом клавиатуры у меня проблемы, я делаю это с помощью хуков, регистрирую хук вот так:
PP определено вот так:
KeyboardProc - это KeyBoardProc определена вот так:
Но этот код работает, но не совсем так как хотелось, например когда пользователь вводит 0, выводиться сообщение об ошибке(так и должно быть), но оно тут же закрывается как будто я нажал на Enter (так не должно быть). Ещё раз моя последовательность действий: 1. Запускаю программу. 2. нажимаю Ctrl+Shift+Alt+Z 3. Ввожу 0. 4. Получаю сообщение об ошибке которое тут же закрывается, как будто я нажал на Enter(хотя так быть не должно, оно должно появиться и не исчезнуть, пока я что-нибудь не сделаю) Я так подозреваю что проблема в KeyboardProc, возможно сообщения остаются в очереди, но такого быть не должно моя программа должна перехватывать клавиши, обрабатывать их нажатие, а остальные программы должны думать что нажатий вообще не было, то есть она должна их "съедать". Вот ссылка на репозиторий на GitHub с полным проектом Пожалуйста помогите. Проект создавался в Visual Studio 2017, написан на C++ и WinAPI.(смотреть в файл Autoclicker.cpp) Добавлено через 2 часа 23 минуты Первую проблему я решил, функция KeyboardProc должна иметь такой вид:
При нажатии Ctrl+Shift+Alt+Z, Ctrl+Alt+Shift остаётся нажатой даже после отжатия Ctrl+Shift+Alt+Z, как это проявляется, ну если нажать на иконку любого приложения на панели задач, то оно запускаеться от администратора, а если нажать Ctrl+Alt+Shift до первого действия, то эффект пропадает. Как это исправить?
0
|
|||||||||||||||||||||
| 03.11.2018, 18:48 | |
|
Ответы с готовыми решениями:
3
Перехват нажатий клавиатуры Глобальный перехват события клавиатуры Реализовать перехват событий клавиатуры (хуки) |
|
12 / 10 / 3
Регистрация: 31.10.2017
Сообщений: 126
|
|||||||||||
| 09.01.2019, 19:56 [ТС] | |||||||||||
|
В ходе моих исследований я выяснил:
1. Клавиши залипают тогда, когда хук на перехват клавиатуры регистрируется в момент когда клавиши нажаты физически, ну то есть, если быстро нажать Ctrl+Alt+Shift+Z, то требуемый функционал срабатывает и клавиши не залипают, из этого можно сделать вывод, для того чтобы это исправить следует добавить проверку нажаты ли клавиши физически, если нажаты то ждать пока отпустят, если отпущены то продолжать. Вот пример исправленного фрагмента кода(здесь представлена обработка горячей клавиши Ctrl+Alt+Shift+Z):
Почему же MessageBox закрывался сам? Да всё просто, если проверить, то он закрывается только тогда, когда вы отпускаете клавишу Enter, в KeyboardProc я перехватывал только нажатие клавиш, в том числе и Enter, если же перехватывать оба сообщения и перестроить логику таким образом, чтобы основные действия выполнялись когда пользователь отпускает клавишу, то ошибка пропадает, вот пример исправленной KeyboardProc:
0
|
|||||||||||
|
134 / 26 / 8
Регистрация: 09.02.2017
Сообщений: 175
|
|
| 10.01.2019, 02:52 | |
|
Вы исправили свои проблемы или еще что-то осталось?
0
|
|
|
12 / 10 / 3
Регистрация: 31.10.2017
Сообщений: 126
|
|
| 15.01.2019, 19:54 [ТС] | |
|
Всё что было я исправил. Спасибо за ваш интерес к этой теме.
1
|
|
| 15.01.2019, 19:54 | |
|
Помогаю со студенческими работами здесь
4
Реализовать функцию на win32api Нужна помощь Win32API Приложение Win32api не работает на других пк Реализация Docking Window Win32Api Копирование текста в переменную win32api Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|