![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() При установке хука на мышь нужно по нажатию левой кнопки выполнять какие-либо действия, а при ее отжатии останавливать выполнение.
Суть проблемы такова: если, к примеру, ставить/снимать "галку" в CheckBox'e по нажатию/отжатию, то все нормально и быстро, но если прописать по нажатию кнопки что-то более длинноиграющее, то пока полностью не отработает функция - не прекращается. ![]() Выносить в отдельный поток не вариант, т.к. пользователь может нажимать кнопку мыши раз в минуту, а может и по 100 раз в секунду (ну, если пальцы не отвалятся ![]() Как прервать на произвольном месте и при повторном нажатии запустить заново? Код:
|
#2
|
||||
|
||||
![]() Поменяйте местами проверки, сначало отжатие и лишь затем жим
З.Ы. Не предназначена ловушка для "тяжёлых" действий, лучше вынести весь спуд в отдельную процедуру с отслеживанием состояния глобального флажка, а вот в обработчике хука запустив её после как раз и управлять этим индикатом, тогда при переключении процедура сама отвалится при изменении состояния Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 25.10.2015 в 12:18. |
#3
|
|||
|
|||
![]() Цитата:
Цитата:
![]() |
#4
|
||||
|
||||
![]() Цитата:
Код:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
vers0 (31.10.2015)
|
#5
|
|||
|
|||
![]() Цитата:
![]() ![]() |
#6
|
|||||
|
|||||
![]() Цитата:
Если пишу так: Код:
![]() И не совсем понял вотэтот участок: Код:
Последний раз редактировалось vers0, 31.10.2015 в 15:09. |
#7
|
||||
|
||||
![]() Undeclared identifier это значит не видно радиокнопки из этой процедуры, вторая ошибка связана с первой и исчезнет, возможно нужно добавить явную указку на родителя компонета (if (MyForm.RadioGroup1.ItemIndex =0)...)
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#8
|
|||
|
|||
![]() Цитата:
Так же не работает программа (вернее работает, но при отжатии не происходит прерывание, а полностью отрабатывает все смещения), но при этом еще и начало игнорить кнопку, при нажатии на которую запускался хук мыши. Уже месяц голову лома...заброшу наверное... Последний раз редактировалось vers0, 31.10.2015 в 16:29. |
#9
|
||||
|
||||
![]() Вызывать можно, этим как раз "эффект разгрузки тяжёлой процедуры" и объясняется - просто сообщения шлются форме постоянно, и если в обработчике задержаться немного, то работающая копия замещается следующей и что-то остановить в прошлой будет довольно трудно
Я проверил предварительно этот код в работе - цикл во внешней процедуре прекрасно обрывается, а как вы там её у себя хотите модернизировать, мне к сожалению, не ведомо Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#10
|
||||
|
||||
![]() Попробуй пусть твоя кнопка использует ShellAPI. Вызов другой программы для твоего большого кода выполнения. Тогда и прервать процесс будет легче. Так как другая программа будет выполнять поставленную задачу. Но и нагрузка на отслеживание нажата кнопка мыши или нет легче будет.
Владение информацией - владение ситуацией... |