Страница: 1 |
Страница: 1 |
Вопрос: Mouse_click в любых (чужих) окнах
Добавлено: 03.03.08 19:10
Автор вопроса: GDK
Нужно сделать чтобы при клике мышкой в любом месте экрана запускалась некая процедура. Например UserSub(). Причём она должна запускаться независимо от того где (в каком месте) экрана произошёл щелчок. Неплохо если какая-нибудь ф-ция будет выводить hwnd окна(элемента управления), в котором произошёл щелчок.
К категории больших знатоков в программировании не отношусь. Если кто-нибудь сталкивался с такой проблемкой пожалуйста помогите хотя бы советами. Жаль нет поиска по форуму.
Mouse_click в любых (чужих) окнах
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 03.03.08 22:03
Первыйнах! Юзай мышиные хуки!
Номер ответа: 2
Автор ответа:
GeniX
ICQ: 418811267
Вопросов: 40
Ответов: 243
Web-сайт:
Профиль | | #2
Добавлено: 04.03.08 07:10
А поиск есть.
Номер ответа: 3
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #3
Добавлено: 04.03.08 09:37
Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
The SendInput function synthesizes keystrokes, mouse motions, and button clicks
Юзай
Номер ответа: 4
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #4
Добавлено: 04.03.08 12:45
Про хуки читал. Пока плохо врубаюсь. Да и страшновато как то. Кое где пишут что можно нарушить работу других "грамотно написанных" программ если неграмотно написать свою.
И впрямь поиск есть. Спсб что подсказал. Воспользуюсь.
Номер ответа: 5
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #5
Добавлено: 04.03.08 13:31
SendInput не подойдёт. Вот что нашёл: Функция SendInput синтезирует нажатия клавиши, движения и щелчки кнопкой мыши. А нужно отловить, а не сгенерировать.
Номер ответа: 6
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #6
Добавлено: 04.03.08 17:22
Да никто твоей программе не станет передавать события мыши если не захучишь её (мышь)
Номер ответа: 7
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #7
Добавлено: 04.03.08 18:46
Приговор понял. Ни у кого нет исходника как это сделать? А то почитал про то как это сделать (API ф-ция SetWindowsHookEx) и понял что при этом надо чтобы существовала *.dll, одной из функций которой будут передаваться сообщения. А моя процедура - в VBA т.е. работает из Excel. Таскать с каждым файлом *.dll - не годится. К тому же: не будет ли ругаться Касперский или др. AVP если поставить хук? Ведь хуки на клаву используются для взлома паролей в программах - шпионах.
Изначально вопрос был такой: отловить событие щелчка на кнопке "отменить" в Excel. Стандартного события для этого не существует т.к. кнопка "отменить" на самом деле не кнопка меню, а ComboBox меню, у которого есть только Change.
Так вот решил сделать это через API. Нашёл GetMessage. Задачу почти решил т.к. моя программа - это часть процесса Excel(я). Потом стало интересно а если надо будет отловить клик или т.п. для Worda или вообще другой проги? Сначала думал что это не сложно (всего то спросить у Винды: а какое ты посылаешь сообщение любой из программ) но как начал поиски - оказался в Жп.
Может быть я не точно задал вопрос(и не в том форуме) но всё же вопрос интересный и наверное многим будет полезно решение этой задачи. Так или иначе постараюсь написать исходник, если получится - выложу, а то про хуки примеры на С++, Делфи и т.п., а вот для VB не встречалось.
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 04.03.08 19:47
Не встречал примеров хука для VB? Х_х
Да он ведь используется везде для перехвата всего чего только можно Возможности уильно увеличиваются.. Вот только с отладкой кода проблемы
Номер ответа: 9
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #9
Добавлено: 07.03.08 09:53
Ну правда не встречал. Нашёл пару примеров, но без описаний, комментарии на англ., и хуки там ставятся на клаву и под конкретные цели. В общем пока не получается разобраться. Может подскажете где поискать. Сам искал через Рамблер "хуки" и "Hook". Да кстати. Возможно ли всё таки поставить хук на мышь(клаву) через VB, причём чтобы не надо было использовать *.dll.
Номер ответа: 10
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #10
Добавлено: 08.03.08 00:52
Первое: Смысл искать рунетовским поисковиком? сам ограничиваешь большую часть ресурсов. тем более гугл частично отечественный поисковик))
также здесь очень много полезного: http://planet-source-code.com/vb
без длл можно
Номер ответа: 11
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #11
Добавлено: 09.03.08 12:01
Если ставишь глобальный хук, то без внешней либы нельзя. Только если для отдельного окна.
Номер ответа: 12
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #12
Добавлено: 09.03.08 20:04
и правда...
Номер ответа: 13
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #13
Добавлено: 11.03.08 13:29
Ну спсб всем за всё. Может чё нарою. Жаль с англ. яз. беда.