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

Ловушка мыши

03.07.2009, 11:32. Показов 4811. Ответов 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
21287 / 8312 / 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
21287 / 8312 / 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
21287 / 8312 / 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
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru