Глобальные хуки на чистом бейсике :)

Здесь можно найти готовые «кирпичики» — части кода, пригодные для построения более крупных проектов, а также решения различных типовых и не очень задач на VB.

Модератор: Brickgroup

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1598
Зарегистрирован: 23.01.2008 (Ср) 14:35

Глобальные хуки на чистом бейсике :)

Сообщение arthur2 » 29.12.2008 (Пн) 21:43

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

Итак, чтобы установить хук не на свой поток (не на свою програму), в функцию SetWindowsHookEx нужно передавать адрес процедуры, находящейся в подключаемой библиотеке. И на самом деле, не важно, стандартная ли это библиотека, ActivX.dll или ... Или даже ActivX.ocx ! Главное - чтобы она могла быть загружена в адресное пространство других процессов.

Фишка: процедура хука попадает в адресное пространство чужого процесса ДО загрузки рантайма. Но если в этой процедуре не использовать функций самого бейсика, а АПИ использовать из тлб, то всё замечательно работает! Рантайм, оказывается, можно и не загружать вовсе! Так что я отказался от "поднятия рантайма за шнурки" :)

Выкладываю два примера. Главный
HookFromBasic.zip
Контрол для установки глобальных хуков на клавиатуру, мышь и CTB
(44.14 Кб) Скачиваний: 341
- в нём более-менее полноценный контрол. Реализовано три вида хуков. На клавиатуру, на мышь и CTB (это сворачивания-разворачивания-скрытия-показывания-создания-разрушения-таскания-растягивания всяких окон).

Второй пример - предельно упрощённый, из него выброшено всё, оставлен только голый принцип. Это, так сказать, минималка - чтобы легче было разобраться :)
Hook min.zip
Минималка хука (голый принцип, чтобы легче было разобраться)
(22.99 Кб) Скачиваний: 337

Для примеров нужна win32.tlb (после компиляции - уже не нужна :)
скачать можно, например, отсюда.

Обратите внимание: нельзя передекларировать используемые АПИ, иначе пример не заработает - те АПИ, которые используются в функциях обратного вызова хуков, должны быть объявлены именно через тлб

Прошу высказываться. Ещё - очень прошу, проверьте КАК ЭТО РАБОТАЕТ В ВИСТЕ? Требуются ли какие-нибудь привилегии, чтобы позволили хукать?
Вложения
WIN32.zip
Win32.tlb
(241.89 Кб) Скачиваний: 181
Последний раз редактировалось arthur2 16.05.2010 (Вс) 14:36, всего редактировалось 8 раз(а).
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Глобальные хуки на чистом бейсике :)

Сообщение Хакер » 29.12.2008 (Пн) 22:20

Приведи текст топика в порядок.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1598
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Глобальные хуки на чистом бейсике :)

Сообщение arthur2 » 29.12.2008 (Пн) 22:24

Поясни, что именно :)
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Глобальные хуки на чистом бейсике :)

Сообщение Хакер » 29.12.2008 (Пн) 23:14

Слишком много эмоций, неточностей, лишнего. Плохо отформатированный текст.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1598
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Глобальные хуки на чистом бейсике :)

Сообщение arthur2 » 29.12.2008 (Пн) 23:25

Неточности - укажи, я поправлю :) Ты же знаешь, я не профессионал.

Форматирование - даже не знаю. Он, вроде, вообще не форматированный - только отбивки абзацев. Что исправить-то?

Смайлики отключил. Один абзац выбросил :)
Артур
 
   


Вернуться в Кирпичный завод

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron