|
12 / 10 / 3
Регистрация: 31.10.2017
Сообщений: 126
|
|||||||||||||||||||||
Перехват клавиатуры Win32API03.11.2018, 18:48. Показов 1868. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|