Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Эдель Гость
|
Добавлено: Сб Авг 21 2004 09:39 Заголовок сообщения: Резиденты |
|
|
Здравствуйте, Уважаемые!
Каким образом я могу на сибилдере написать резидент, который будет олвейз_он_топ, отслеживая перемешения мышки по всей системе и выводя это у себя в, скажем, Листбоксе?
Заранее спасибо |
|
Вернуться к началу |
|
|
RealMode
Зарегистрирован: 26.04.2004 Сообщения: 21
|
Добавлено: Сб Авг 21 2004 21:03 Заголовок сообщения: |
|
|
Этот "резидент" (доля правды в этом есть ) во-первых должен находиться в DLL, а сам механизм "ловли" любых сообщений системы ( в том числе и от мыши) осуществляется установкой т.н. хуков - ловушек сообщений (функции SetWindowsHookEx, CallNextHookEx, UnHookWindowsHook и т.д.). Программа же вызывает процедуру установки этих ловушек из DLL и получает сообщения, на которые собственно были установлены ловушки - можно например установить только для сообщений от мыши, или от клавиатуры и т.д. или от всего сразу ... |
|
Вернуться к началу |
|
|
GeX
Зарегистрирован: 03.01.2004 Сообщения: 60 Откуда: Россия, Иркутск
|
Добавлено: Пн Авг 23 2004 09:51 Заголовок сообщения: |
|
|
Еще можно добавить что находиться в DLL самой проге необязательно и невозможно (как ты ее запускать будешь, RunDLL-ом только). А вот сам обработчик хука обязательно должен быть в DLL-ке. И постарайся его сделать наиболее оптимизированным, потому что он влияет на производительность всей системы. |
|
Вернуться к началу |
|
|
Эдель Гость
|
Добавлено: Ср Авг 25 2004 10:03 Заголовок сообщения: |
|
|
Тогда совсем тупой вопрос - как написать длльку.
Я только недавно занялся С++, поэтому многого еще не понимаю |
|
Вернуться к началу |
|
|
dAnIK SeNT
Зарегистрирован: 11.06.2004 Сообщения: 43 Откуда: Казань
|
Добавлено: Чт Авг 26 2004 14:05 Заголовок сообщения: |
|
|
Эдель писал(а): | Тогда совсем тупой вопрос - как написать длльку.
Я только недавно занялся С++, поэтому многого еще не понимаю |
В билдере это скорее всего задается при создании проекта - делаешь New DLL. Это укажет компилятору на то, что требуется скомпилировать именно DLL. После этого пишешь код по определённым правилам - во-первых, должна быть функция, обрабатывающая некоторые стандартные действия (как, например, создание/уничтожение экземпляра DLL) - эта функция, почти 100% будет сгенерирована из стандартного шаблона при создании проекта. во-вторых, надо создать несколько экспортируемых функций, выполняющих нужные действия. В билдере для того, чтобы сделать функции экспортируемыми, их, скорее всего, надо перечислить в разделе exports где-нибудь в начале кода. Все подробности по написанию DLL легко найти в хелпе.
После того как будет скомпилирована dll-ка, содержащая несколько экспортируемых функций, надо будет создать программу-влдельца, которая будет эту dll-ку регистерить в качестве хука. ИЗ этой проги надо будет лишь вызвать соответствующую функцию API (поищи в хелпе по апям по слову Hook). И всё будет рулиться.
Могу выложить свою небольшую прогу, которую навалял когда-то для блокирования клавиши Win (в Дьяблу, понимаешь, играть было неудобно ). Дольше 10 минут тратить на написание проги не хотелось, вот я и сделал тем, что под руку попалось. А под руку попались именно хуки .
Прожка тупая - запускаешь exe-шник, он создаёт иконку в трее и регает хук. По щелчку на иконке прога выгружается.
Но сразу предупрежу - код для MSVC++, с билдером я ни разу не работал, даже не видел его _________________ Cисадмин - образ жизни. Программист - диагноз... |
|
Вернуться к началу |
|
|
|