![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Handle шпион [D5, Win95/98]
BDRON © (2002-01-08 18:12:00)Подскажите, плз, как сделать прогу, которая не имея собственной формы, находясь в Tray сохраняла куда-либо Handle нового открытого окна. Мне непонятно как сделать чтобы она постоянно следила за изменением Handle, т.е. открытием нового окна ведь сама программа будет не активна.
Fellomena (2002-01-09 14:00:00) [1]2 Виктор Щербаков:
ты наверное меня не понял...
Если яставлю несколькоглобальных hook-ов и не делаю CallNextHookEx, то конечно же выполнится только последний поставленный hook, а те что перед ним - не сработают.
Но есть такое понятие как системный hook, который ставится не пользователем, а присутствует в системе как таковой. Так вот до него, как мне показалось, всегда сообщение доходит, несмотря на то вызывали мы CallNextHookEx или нет.
Виктор Щербаков (2002-01-09 13:50:00) [2]Ну ясно же написано:
Windows does not call the hook procedures installed before the current hook procedure was installed.
Т.е. всё решает вызов CallNextHookEx или его отсутствие.
Fellomena (2002-01-09 13:37:00) [3]2 Виктор Щербаков:
да искала... -> failed 8(
И ещё - ведь сообщение доходит до системной ловушки, которая стоит в голове очереди, в любом случае - даже если мы не делаем CallNextHookEx - так же ?
Судя по моим экспериментам - именно так, но тогда возникают некоторые вопросы...
Виктор Щербаков (2002-01-09 13:32:00) [4]>Неужели создатели Windows не предусмотрели ничего
>более простого для передачи SysHook
>(SysHook := SetWindowsHookEx(...)), кроме как механизм >MemoryMapedFiles ?
>Как-то это неудобно, однако.
Посмотри SDK Kernel Objects, может чё нибудь более удобное найдешь.
Fellomena (2002-01-09 13:25:00) [5]2 Юрий Зотов:
угу... так и есть, но я в качестве варианта предложила...
некоторым просто hook-и писать сложно. (лично я долго разбиралась в механизмах использования hook-ов и до сих пор не понимаю некоторых вещей )
И к тому же, позвольте спросить, разъяснилась ли ситуация по поводу CallNextHookEx ?
Т.е. когда мы ставим несколько глобальных hook-ов на одно и тоже сообщение...
Вы, приведя пример в этом форуме, сами сказали, что он выглядит несколько подозрительно, несмотря на то, что под Win98 он работает.
Неужели создатели Windows не предусмотрели ничего более простого для передачи SysHook (SysHook := SetWindowsHookEx(...)), кроме как механизм MemoryMapedFiles ?
Как-то это неудобно, однако.
Юрий Зотов (2002-01-09 12:46:00) [6]> Fellomena (09.01.02 12:26)
Предположим, интервал таймера - 1 сек. Некая программа создает окно и сразу его уничтожает, причем все это попадает между двумя последовательными тиками таймера.
Результат - окно отслежено не будет. А хук с отловом WM_CREATE сработает в любом случае.
Fellomena (2002-01-09 12:26:00) [7]2 Юрий Зотов, BDRON:
не обязательно hook использовать. Можно просто при запуске программы искать все открытые окна (FindWindowsEx) и записывать их handles в некий список, потом по таймеру (хм... мда, hook получше будет) снова считывать все handles открытых окон и сравнивать с тем, что в списке !
Юрий Зотов (2002-01-08 18:23:00) [8]И снова SetWindowsHookEx.