Hook: как лучше сделать

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Hook: как лучше сделать

Сообщение Twister » 19.07.2005 (Вт) 11:24

:idea: Прошу совета вот в каком вопросе:

Мне нужно сделать хук на создание и уничтожение окон в системе. Хук этот должен быть в ДЛЛке (т.к. пишется это на Делфи) и при обнаружении в системе нового окна передать его хэндл моему приложению. Вопрос вот в чем: как лучше и правильнее организовать передачу данных (Через пайп, мэйлслот или маппинг). Если можно, то подкрепите свои ответы кусочком кода, т.к. с этими функциями (создание пайпов и т.д.) я на ВЫ.

Заранее огромное спасибо...
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.07.2005 (Вт) 11:34

Как хочешь, так и передавай. Я бы советовал маппинг либо пересылку сообщений через SendMessage.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 19.07.2005 (Вт) 11:40

Да, через SendMessage я уже думал... Спасибо.

А еще вопрос: какой хук используется для слежки за процессами (создание и завершение)?
А я все практикую лечение травами...

Jenizix
Географ
Географ
Аватара пользователя
 
Сообщения: 545
Зарегистрирован: 20.04.2004 (Вт) 20:52
Откуда: Москва

Сообщение Jenizix » 19.07.2005 (Вт) 12:03

>> А еще вопрос: какой хук используется для слежки за процессами (создание и завершение)?
CreateProcess
Ушел в себя, вернусь не скоро...

Если вам нужно сделать прозрачной только форму, а контролы на ней нет, то вам сюда!!!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 19.07.2005 (Вт) 12:10

Jenizix писал(а):CreateProcess

Нет, ты не понял. Вот висит моя ДЛЛка в памяти, вдруг появляется процесс (новый, не мной запущенный). Как узнать о его появлении (не перебирать же по таймеру список процессов!)? А вот когда узнаю, тогда можно CreateProcess или OpenProcess для дальнейшей слежки...
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.07.2005 (Вт) 12:19

Павлов Максим писал(а):не перебирать же по таймеру список процессов

Перебирать.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 19.07.2005 (Вт) 12:24

Так ЧЕ, константы для SetWindowsHookEx нету чтоль?... Ведь для слежения за окнами есть. Можно конечно фиксировать появление окна, и по нему вычислять процесс, но как быть с закрытием процесса?...

Кстати, о первом вопросе, еще варианты есть?
А я все практикую лечение травами...

Опришник
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 09.01.2005 (Вс) 0:48
Откуда: localhost

Сообщение Опришник » 21.07.2005 (Чт) 21:39

Павлов Максим писал(а):Да, через SendMessage я уже думал... Спасибо.

А еще вопрос: какой хук используется для слежки за процессами (создание и завершение)?

А чем SendMessage не устраивает?

А хука такого и нет вовсе...
Я слышал люди некоторые это делают через перехват вызовов API-функций, а некоторые не страдают этим(или не умеют этим страдать), просто раз в 1сек перебирают все процессы и отслеживают изменения...(если раз в 1сек не устраивает, то можно в цикле (Do...Loop) :D )
А здесь могла бы быть ваша реклама...)

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.07.2005 (Пт) 6:33

Я решил делать так - установлю хук на создание окон и буду их отслеживать. При обнарудении нового окна буду проверять, к какому процессу оно относится, и если это новый процесс то... ну и дальше идут действия.
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.07.2005 (Пт) 6:34

Но перебор процессов нужен все равно - ведь новый процесс может и не содержать окон.
А я все практикую лечение травами...


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 148

    TopList