Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832

Перехват левой кнопки мыши

25.08.2016, 11:20. Показов 5819. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой код:
C++
1
2
3
4
5
6
7
8
unsigned int index;
AnsiString KEY;
unsigned short result;
void IsSystemKey (unsigned int k)
{ 
KEY = "";
if (k == VK_LBUTTON) KEY = "LMouse";
}
Далее обработка в цикле:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//åñëè íàæàòà ëåâàÿ êëàâèøà
index = 1;
while (index < 256)
{
result = GetAsyncKeyState(index);
Application->ProcessMessages();
if (result != 0)
{
IsSystemKey(index);
while (result != 0)
{
result = GetAsyncKeyState(index);
}
index = 1;
}
index++;
}
if(KEY == "LMouse")
{
//здесь обработка
key = "";
}
Все работает, но проблема в том, что код начинает выполнятся после того, как я отпустил левую кнопку мыши, а нужно в то время, пока я ее держу. Как это сделать?

Добавлено через 19 часов 11 минут
Есть какой-либо метод?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.08.2016, 11:20
Ответы с готовыми решениями:

Перехват левой кнопки мыши
Всем привет. Появился вопрос: как возможно перехватить левую кнопку мыши, но не дать заполучить этот запрос другим программам? То есть...

Запрет нажатия левой кнопки мыши на кнопке (C++ Builder 6)
Нужно реализовать блокировку нажатия для левой кнопки мыши(если это возможно). Кроме: if(Button == mbLeft) return; ничего не знаю,...

Как сделать нажатие левой кнопки мыши по таймеру
Видел много программ по типу авто &quot;кликеры&quot; вот думал дай свою напишу хотел попробовать и тут на тебе сразу тупик на 1 ступени. Помогите...

26
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
26.08.2016, 13:02  [ТС]
Студворк — интернет-сервис помощи студентам
В цикле содержится еще такая вещь, как снимок скриншота и обработка 25 пикселей по центру. Если они соответствуют условию, если левая кнопка нажата, мышка должна передвигаться, допустим, влево.
Все это в вечном цикле с сопровождением
C++
1
Application->ProcessMessages();
чтобы была возможность выключить программу
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,184
Записей в блоге: 3
26.08.2016, 21:21
Уже по Вашему описанию того что Вы делаете, можно понять , что явно выбрали неверный подход к реализации задуманного.
Что можно сделать..скорее всего описать целиком картину сюда, что бы Вас поставили на путь правильный.
Или пойти по граблям, как в свое время сделал я , и до сих пор с них сойти не могу
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
26.08.2016, 21:31  [ТС]
Чего же я делаю не правильно?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,184
Записей в блоге: 3
26.08.2016, 21:40
Цитата Сообщение от ziqp Посмотреть сообщение
Application->ProcessMessages();
чтобы была возможность выключить программу
к примеру если у вас есть сложные вычисления, которые тормозят основную форму, можно задуматься для них держать отдельный поток.
0
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
26.08.2016, 22:41  [ТС]
Можно. Но ведь хук всеравно будет тормозить передвижения мыши. нет?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,184
Записей в блоге: 3
26.08.2016, 23:11
У Вас хук тормозит потому что на нем стоят вычисления как я понял. Как выше написал volvo вывести вычисление в другое место, может даже в поток (все зависит от специфики задумки)....тогда поток будет сам работать с вашей картинкой а основная форма в обще не будет тормозить.
1
129 / 65 / 16
Регистрация: 03.09.2015
Сообщений: 832
27.08.2016, 11:15  [ТС]
Всеравно тормозит (где-то через секунд 5 после нажатия левой кнопки мыши). Сделал отдельный поток, убрал
C++
1
Application->ProcessMessages();
Но теперь и сама форма приложения не открывается
Поток сделал так:
Вызов:
C++
1
2
DWORD  ThreadID;
HANDLE hThread = CreateThread ( NULL, 0, ThreadFunc, NULL, 0, &ThreadID );
Сам поток:
C++
1
2
3
DWORD __stdcall ThreadFunc ( void *p )
{
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.08.2016, 11:15

Очистка memo по щелчку левой кнопкой мыши
Как очистить компонент memo при нажатии на него левой кнопкой мыши?

Перехват мыши
Всем привет! Вообщем стоит задача, использовать одну мышь, на два (мб и более) PC, за основной интерфейс взаимодействия между машинами...

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

Реализовать движение мыши по какой-нибудь траектории, и в конце ее - клик левой кнопкой
Здравствуйте. Подскажите как реализовать движение мыши по какой-нибудь траектории и в конце вызвать клик левой клавишей. Например: по...

Нажатие на пункт PopupMenu MenuItem по событию MenuItemClick правой или левой кнопкой мыши
Собственно никак не получается. Надо, чтобы по левой работал код пункта, а по правой только чекинг ставился... по...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru