Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
2 / 2 / 2
Регистрация: 07.02.2009
Сообщений: 36

Ловушка мыши

03.07.2009, 11:32. Показов 4808. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, собственно пытаюсь написать программу для "ловления" координат курсора, при щелчке на правую кнопку мыши. Все сделал, кроме самого главного - срабатывания программы по щелчку, точнее срабатывания войда.. создать своеобразную ловушку. Прочитав учебник я наткнулся лишь на большой код с которым не смог разобраться, так, что прошу помощи у специалистов!
з.ы. пишу для общего развития
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2009, 11:32
Ответы с готовыми решениями:

Chart как показывать координаты мыши по графику возле курсора мыши!
Chart как показывать координаты мыши по графику возле курсора мыши! Когда двигаешь мышкой по графику координаты обновлялись!

Вывести поточные координаты курсора мыши относительно формы и экрана, при нажатии на кнопку-реверсное изменение кнопок мыши C++
доброй ночи, уважаемые программисты, умные школьники, преуспевающие студенты, а также все участники этого форума. помогите, пожалуйста,...

Ловушка delphi
Помогите пожалуйста! Не могу понять в чем проблема. library syshook; uses windows, messages,ComObj,SysUtils; {$R *.res} ...

27
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
03.07.2009, 19:46
Студворк — интернет-сервис помощи студентам
Ну это выдержка из документации. Но почему такое ограничение, сам ты не знаешь?
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
03.07.2009, 20:48
Это связано с особенностью вызова фильтрующих функций операционной системой windows. Хотя, иногда можно и сделать эти функции прямо в exe (я делал хук для клавы), и даже будет работать (для некоторых сообщений windows майкрософт разрешает делать функции прямо в ехе, ввиду того, что они вызываются иначе), но тогда MS не дает тебе гарантии, что у тебя все будет работать правильно и не навернет систему при удобном случае.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
03.07.2009, 22:20
Цитата Сообщение от Evg Посмотреть сообщение
Ну это выдержка из документации. Но почему такое ограничение, сам ты не знаешь?
Честно говоря как-то не задумывался над этим вопросом. Раз Microsoft рекомендует, значит есть причина. Когда сам разбирался с хуками, помещал процедры обработки в DLL в соответстии с рекомендациями. Vourhey выше отметил причину такого ограничения.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
04.07.2009, 00:14
> Это связано с особенностью вызова фильтрующих функций операционной системой windows

А есть какой-нибудь линуксовый аналог подобного ограничения? Мне просто интересно стало, чем в этом отношении dll принципиально отличается от Exe с точки зрения ОС
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
04.07.2009, 00:49
Судя по тому что написано в статье Using Hooks на MSDN, получается что библиотека, содержащая процедуру обработки (в случае глобального хука), загружается в адресное пространство каждого процесса и вызывается также для каждого из них (процессов). Отсюда и ограничение.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
04.07.2009, 01:02
А под линуксовые окна есть хуки? Разве это не будет зависить от менеджера окон, версии иксов?
Самое главное отличие в том, что при загрузке длл автоматически инициализируется своя область данных, shared-область, область для статических переменных. Таким образом у нас все настроено и ко всему мы можем обратиться. Потом контекст этой библиотеки будет копироваться в контекст каждого процесса и вызываться в нем. В ехе этого всего нет. Ты по сути, просто получаешь адрес на вход в функцию из ехе. Никаких областей инициализированных данных. Ты должен сам полностью писать, код чтобы найти адреса своих данных.
Ну, и еще, хотя бы тем, что когда я буду грузить dll (loadlibrary) то вызовется dllmain, а к ехе "слово" грузить не применимо, хотя LoadLibrary на него тоже сработает.
У приложения также есть такие вещи, как хэндлы открытых файлов/сокетов, стэк, чего у длл нет.

Добавлено через 5 минут 35 секунд
Evg, вообще мы уже отошли от изначальной темы.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21286 / 8311 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
04.07.2009, 12:30
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
получается что библиотека, содержащая процедуру обработки (в случае глобального хука), загружается в адресное пространство каждого процесса и вызывается также для каждого из них (процессов).
Цитата Сообщение от Vourhey Посмотреть сообщение
Потом контекст этой библиотеки будет копироваться в контекст каждого процесса и вызываться в нем.
Я всегда считал, что *.dll под виндой это примерно то же самое, что *.so в юниксе. Оказывается, не совсем так.

С точки зрения юнисов, код, загруженный из (условно) a.out и *.so ничем не отличается - для ОС это просто отмапированные файлы, часть которых (*.exe) мапируется как private, а остальное (*.so) - как shared, а загрузкой *.so занимается не ОС а внешний динамический загрузчик (ld.so), который для ОС является самым обыкновенным процессом.

Если юниксы разрабатываются из принципа "мухи отдельно, котлеты отдельно", то винда изначально разрабатывалась по принципу "миллион в одном". Загрузкой *.dll занимается непосредственно ОС. При этом ОС "лезет" вовнутрь *.dll, по каким-то признакам понимает, что модуль содержит какие-то глобальные хуки (или как там они правильно называются) и по этому критерию подмапирует этот разделяемый (shared) код к каждому процессу. Видимо с целью того, чтобы активный на текущий момент процесс что-то куда-то послал, после чего управление бы передалось на хук в тотм процесс, который инициировал загрузку этого .dll.

В юниксе такой механизм не нужен из-за того, что изначально запускаются X'ы, которые собственно и занимаются обработкой всех нажатых кнопок, мышек и дальнейшей пересылкой нужным процессам

Так чтоли получается? детали не столь важны, просто принцип примерно такой?

Цитата Сообщение от Vourhey Посмотреть сообщение
Evg, вообще мы уже отошли от изначальной темы.
Мне кажется, что если отклонение затрагивает другую тему, а не превращается в тупой флуд, то в этом нет ничего плохого. С учётом того, сколько народу попало на форум через поисковики, сие может оказаться полезным кому-то ещё
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
04.07.2009, 13:04
Ставь ты глобальный хук и не парься. Что искать читай выше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.07.2009, 13:04

SNMP ловушка
Всем привет! Есть у кого-нибудь рабочий пример кода SNMP ловушки? То есть устройство при возникновении ошибок выдает SNMP Trap на...

Shutdown ловушка c#
Всем доброго дня. Есть ли возможность отследить внезапное завершение процесса (убийство процесса пользователем, через диспетчер задач), и...

Метательная ловушка
Хай! В общем, вчера когда засыпал, думал, во многих мультиках про всяких каратистов и ниндзя показывали одну штуку: сделана из пары...

Ловушка SNMP трапов
Всем доброго дня! И надеюсь на Вашу помощь. В локальной сети есть железка, которая, при возникновении ошибок, отправляет на указанный...

Ловушка для блокнота
в общем, проблема такая программа должна подменивать символы в блокноте(печатаю а напечатается b, b->c, c->d и.т.д) делал тип...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный 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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru