Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить что комп простаивает? 
:(
    Опции темы
Rennigth
Дата 8.8.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



MetalFan
Кстати интересно будет smile 

P.S. Я кстати с удовольствием бы послушал бы отзывы людей которые часто используют хуки в своих приложениях. Я их использовал, на клаву вроде и все... ну небыло ситуаций у меня когда без них никак. Хотя сейчас в текущей моей задаче наверное придется ставить на zwTerninateProcess...

P.S.S. Просто интересно на какие грабли ножно наступить, а если наступить, то не очень сильно удариться smile

Добавлено через 12 минут и 10 секунд
Кстати "по моему скромному мнению" было бы не плохо если кто-нибудь, кто шарит хорошо в этом написал бы статейку. Ну чтоб с бегемотами и т.д. smile Будет куда направлять новичков, а то многие начитаются статей ms-rem-а, а с проблемами и не пониманием идут сюда...


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
MetalFan
Дата 8.8.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



хм) была как-то статейка "Хуки. Аспекты реализации" чтоли называлась) на DelphiWorld точно была,а может счас и в DRKB перенесли


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
W4FhLF
Дата 8.8.2007, 11:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



MetalFan, что ты так завёлся про хуки? Они отрицательно влияют на быстродействие. Не надо быть гением, чтобы понять это, просто надо представлять себе как это всё работает. 

Сами по себе хуки - это связный список. Вот как описывает схему работы Рихтер:

Цитата


1. Поток процесса В собирается направить сообщение какому-либо окну. 

2. Система проверяет, не установлена ли для данного потока ловушка WH_***. 

3. Затем выясняет, спроецирована ли DLL, содержащая функцию HookProc, на адресное пространство процесса В 

4. Если указанная DLL еще не спроецирована, система отображает ее на адресное пространство процесса В и увеличивает счетчик блокировок (lock count) проекции DLL в процессе В на 1 

5. Система проверяет, не совпадают ли значения hinstDll этой DLL, относящиеся к процессам А и В. Если hinstDll в обоих процессах одинаковы, то и адрес HookProc в этих процессах тоже одинаков. Тогда система может просто вызвать HookProc в адресном пространстве процесса А. Если же hinstDll различны, система определяет адрес функции HookProc в адресном пространстве процесса В по формуле: 

HookProc В = histDll В + (HookProc А - hinstDll А) 

Вычитая hinstDll из HookProc, Вы получаете смещение (в байтах) адреса функции GetMsgProc. Добавляя это смещение к hinstDll В, Вы получаете адрес HookProc, соответствующий проекции DLL в адресном пространстве процесса В 

6. Счетчик блокировок проекции DLL в процессе В увеличивается на 1. 

7. Вызывается HookProc в адресном пространстве процесса В. 

8. После возврата из HookProc счетчик блокировок проекции DLL в адресном пространстве процесса В уменьшается на 1.


Время выполнения 7го этапа напрямую зависит от быстродействия и объёма кода, который содержит твоя HookProc. Потеря быстродействия может быть и незаметна, а может прилично тормозить систему или вообще повешает её. В любом случае, глобальные хуки стоит использовать только при крайней необходимости, когда нет других решений. 

Это сообщение отредактировал(а) W4FhLF - 8.8.2007, 11:33


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
MetalFan
Дата 8.8.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(W4FhLF @  8.8.2007,  11:31 Найти цитируемый пост)
Время выполнения 7го этапа напрямую зависит от быстродействия и объёма кода, который содержит твоя HookProc.

в том то и дело, что если грамотно ее написать, то никаких проблем быть НЕ ДОЛЖНО.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
bems
Дата 8.8.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(MetalFan @  8.8.2007,  11:51 Найти цитируемый пост)
в том то и дело, что если грамотно ее написать, то никаких проблем быть НЕ ДОЛЖНО. 
в том то и дело, что для отсутствия проблем нужно чтобы грамотно были написаны все хуки в системе, а не только твои. Ты никогда не знаешь будет ли у твоегог хука шанс среагировать на событие (не будет ли оно "обработано" более ранним хуком)



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.