|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.04.2010, 16:22 | #1 |
Форумчанин
Регистрация: 03.10.2008
Сообщений: 180
|
Как отследить нажатие мыши не важно где?
Как отследить нажатие мыши не важно где?
Нужно перехватывать сообщение о нажатии мыши (правой и/или левой), выполнять код (например считывать координаты), а потом передавать дальнейшую обработку Виндоусу. Нажатие кнопки мыши может быть где угодно, например клик по элементу управления в другом приложении, при этом работа в этом приложении не должна нарушаться. Например в Ворде: клик по меню файл -> пункт "открыть" -> появляется окно и нажатие по кнопки "открыть"; этот процесс не прерывается, а программа ловит сообщения о кликах и записывает координаты курсора. Как такое реализовать? пробовал создавать процедуры через Application и обработчики реагирующие на WM_LBOTTONDOWN - работает только в пределах моего приложения. Хуки не передают обработку обратно Виндоусу.
лучший подарок женщине-программисту
Последний раз редактировалось chandrasecar; 11.04.2010 в 16:24. |
11.04.2010, 17:00 | #2 |
Пользователь
Регистрация: 28.07.2009
Сообщений: 13
|
Игрался в свое время. Код неряшливый (так, баловался), но принцип понятен. Взаимодействие dll с программой, которая анализирует нажатие клавиш клавиатуры и мыши (а также движение мыши), реализовал через сокет по UDP. Так мне было удобнее и интереснее. Можно и по другому сделать . Желаю удачи!
|
12.04.2010, 11:02 | #4 |
Пользователь
Регистрация: 28.07.2009
Сообщений: 13
|
Написана на С. Проект на Microsoft Visual Studio для dll я Вам выложил.
Для мыши последовательность чисел следующая: 1 - Номер процесса который подключился к DLL, тоесть каждый раз когда Вы переносите мышь на новое окно, появляется новый процесс. Дальше последовательность следующая 2 - potok_mouse.mes.message = WH_MOUSE; 3 - potok_mouse.mes.nCode = nCode; 4 - potok_mouse.mes.wParam = wParam; 5 - potok_mouse.mes.lParam = lParam; Точно так как в моем исходном коде посылается пакет UDP из DLL Дальше при хуке HookProcedureMouse( int nCode, WPARAM wParam, LPARAM lParam ) В lParam передается адрес на структуру MOUSEHOOKSTRUCT, где из нее берется 6 - координата X 7 - координата Y 8 - HWND окна,где "скребет" мышь , в шестнадцатеричном представлении |
19.04.2010, 18:05 | #5 |
Пользователь
Регистрация: 19.04.2010
Сообщений: 14
|
Хуками. Можн немного сложнее - драйвер-фильтр написать.
Victōrem a victo superāri saepe vidēmus.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как отследить нажатие на ссылку, без использования JS | [Smarik] | PHP | 2 | 04.07.2009 15:27 |
Как отследить нажатие кнопки? | Bezdar | Microsoft Office Excel | 9 | 17.12.2008 11:12 |
Как отследить нажатие кнопки Обновить из PHP? | Timpi | PHP | 4 | 11.07.2008 09:16 |
как отследить нажатие клавиши Delete | D-fens | Общие вопросы Delphi | 4 | 07.06.2007 23:58 |