![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
На моей мышке есть дополнительные две кнопки
Вопрос: как в D7 отловить их нажатие, чтобы использовать в своей программе? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 07.11.2011
Сообщений: 178
|
![]()
Эти две кнопки это скорее всего xbutton1 и xbuton2, курим справку и выбираем способ и соответсвенно обрабатываем сообщения, в простейшем виде
Код:
Последний раз редактировалось DIONISKA; 22.08.2023 в 08:00. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Спасибо, код протестировал
Результат такой: если я совершаю нажатие на форме - оно обрабатывается Если я совершаю нажатие на кнопке, или еще на каком-то элементе - то оно игнорируется Отсюда вопрос: как распространить это нажатие на кнопку, или еще какой-то элемент? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Экспериментально получилось как-то так, но не сильно удобно получается
Это единственный способ решения проблемы? Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 07.11.2011
Сообщений: 178
|
![]()
могло бы помочь KeyPreview:=True; если-бы это не были xbutton, но и так вариантов в принципе немало: от локальных хуков до грязных хаков. Самый простой вариант это взять компонент TApplicationEvents и в OnMessage назначить ему что-то вроде:
Код:
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Итак, сделал вот такой вот код.
Код:
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 07.11.2011
Сообщений: 178
|
![]()
Используйте вариант с ApplicationEvents(TApplicationEvents), сам компонент на вкладке additional. Я чуть выше пример написал, он должен работать со всеми элементами без таких костылей. Если мне не изменяет память ApplicationEvents есть даже в Delphi 6(возможно и в более старых версиях), другой вопрос если используете lazarus/codetyphon, там есть аналог ApplicationProperties, но у него нет события OnMessage, там скорее всего проще с хуками на WH_GETMESSAGE.
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
Вопрос про костыли номер 2
Такой код оптимален, или более прямой способ? Цель всей конструкции - во время какого-то другого действия отследить факт того что боковая кнопка зажата Код:
Код:
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 07.11.2011
Сообщений: 178
|
![]()
Если речь идёт просто о проверке что в какой-то произвольный момент времени нажата-ли кнопка, а не нужно отловить событие нажатия, то рациональнее всего использовать GetAsyncKeyState() из winapi(в том числе для XBUTTON1 и XBUTTON2). Что-то вроде:
Код:
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 10.02.2021
Сообщений: 684
|
![]()
О, спасибо. Это как раз то что мне нужно было
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как скрыть показать скрытые файлы, и папки, без нажатие кнопки мышки Обновить | falsebegin | Общие вопросы Delphi | 6 | 16.05.2019 05:43 |
Как осуществить выход из программы нажатием правой кнопки мышки? Ассемблер | Vacarme | Помощь студентам | 0 | 26.05.2013 11:38 |
Нажатие левой кнопки мышки | sashaxD | Общие вопросы Delphi | 18 | 14.06.2011 19:40 |
дополнительные кнопки в EXEL | MixanMM | Microsoft Office Excel | 3 | 18.11.2009 12:53 |
Проблема с нажатием кнопки мышки | Zeraim | Общие вопросы Delphi | 2 | 23.05.2008 18:33 |