Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Загрузка CPU 20% от простого двиганья мышкой (число прочтений - 7607 )
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Загрузка CPU 20% от простого двиганья мышкой
26. Сентября 2006 :: 09:38
Печать  
Причина, похоже в не правельной отработки звена очереди хука.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #1 - 26. Сентября 2006 :: 09:41
Печать  
Отключи перехват мыши.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #2 - 26. Сентября 2006 :: 09:48
Печать  
Цитата:
Причина, похоже в не правельной отработки звена очереди хука.

Ух! А что такое "звено очереди хука"?
  

FormEx developer
Наверх
www  
IP записан
 
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #3 - 26. Сентября 2006 :: 09:50
Печать  
Вобщем ситуация такая есть 2 хука Key_Hook и  Mouse_Hook, принцип работы у них одинаковый и оба после обработки очередного события возращает всегда 0 и иногда 1, но вот оправдано ли это? Потому как иногда надо ещё возращать и -1. Меня это и беспокоит.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #4 - 26. Сентября 2006 :: 09:54
Печать  
Цитата:
Вобщем ситуация такая есть 2 хука Key_Hook и  Mouse_Hook, принцип работы у них одинаковый и оба после обработки очередного события возращает всегда 0 и иногда 1, но вот оправдано ли это? Потому как иногда надо ещё возращать и -1. Меня это и беспокоит.

Исправлю.
Кое-что там уже было исправлено по сравнению с 1С++.
  

FormEx developer
Наверх
www  
IP записан
 
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #5 - 26. Сентября 2006 :: 10:03
Печать  
Цитата:
Исправлю.
Кое-что там уже было исправлено по сравнению с 1С++.


А для 2.0.3.х линейки кирдык?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #6 - 26. Сентября 2006 :: 10:11
Печать  
Цитата:
Цитата:
Исправлю.
Кое-что там уже было исправлено по сравнению с 1С++.


А для 2.0.3.х линейки кирдык?

Это не ко мне уже.
  

FormEx developer
Наверх
www  
IP записан
 
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #7 - 26. Сентября 2006 :: 10:20
Печать  
Спасиб огромное, будем на FormEx.dll переходить.
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #8 - 26. Сентября 2006 :: 14:36
Печать  
Цитата:
возращает всегда 0 и иногда 1...иногда надо ещё возращать и -1.

Почему (для развития кругозора)?
  
Наверх
ICQ  
IP записан
 
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #9 - 29. Сентября 2006 :: 04:18
Печать  
spock писал(а) 26. Сентября 2006 :: 14:36:
Цитата:
возращает всегда 0 и иногда 1...иногда надо ещё возращать и -1.

Почему (для развития кругозора)?


Честно говоря сам не знаю, наверно нужно мануал почитать (т.е. дальше могу соврать), но помойму если обработчик возращает -1 то следующим звеньям цепочки code получается < 0
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #10 - 29. Сентября 2006 :: 05:42
Печать  
Цитата:
spock писал(а) 26. Сентября 2006 :: 14:36:
Цитата:
возращает всегда 0 и иногда 1...иногда надо ещё возращать и -1.

Почему (для развития кругозора)?


Честно говоря сам не знаю, наверно нужно мануал почитать (т.е. дальше могу соврать), но помойму если обработчик возращает -1 то следующим звеньям цепочки code получается < 0


Вот что говорит MSDN.
Цитата:
Return Value

If nCode is less than zero, the hook procedure must return the value returned by CallNextHookEx.

If nCode is greater than or equal to zero, and the hook procedure did not process the message, it is highly recommended that you call CallNextHookEx and return the value it returns; otherwise, other applications that have installed WH_MOUSE hooks will not receive hook notifications and may behave incorrectly as a result. If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the target window procedure.

Т.е. получается, что если возвращать -1, то это все тот же возврат "a nonzero value".
  

FormEx developer
Наверх
www  
IP записан
 
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #11 - 29. Сентября 2006 :: 13:51
Печать  
Цитата:
Вот что говорит MSDN.
Цитата:
Return Value

If nCode is less than zero, the hook procedure must return the value returned by CallNextHookEx.

If nCode is greater than or equal to zero, and the hook procedure did not process the message, it is highly recommended that you call CallNextHookEx and return the value it returns; otherwise, other applications that have installed WH_MOUSE hooks will not receive hook notifications and may behave incorrectly as a result. If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the target window procedure.

Т.е. получается, что если возвращать -1, то это все тот же возврат "a nonzero value".


Что-то не срастаеться, есть желание сделать демку с 2мя хуками показать следующее, если первый хук возвращает всегда 0, тогда вне зависимости возращаемого значения второй ловушкой, тагет получит событие. (К сожалению времени счас мало попробую сделать после выходных)
  
Наверх
ICQ  
IP записан
 
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #12 - 29. Сентября 2006 :: 13:56
Печать  
Цитата:
Что-то не срастаеться, есть желание сделать демку с 2мя хуками показать следующее, если первый хук возвращает всегда 0, тогда вне зависимости возращаемого значения второй ловушкой, тагет получит событие. (К сожалению времени счас мало попробую сделать после выходных)


Перечитал, понял что прогнал лажу, всё должно быть вот так:
первый должен возвращать не ноль (например +1), второй должен слать 0 (типа как было изначально в ВК), тогда третий хук получить code=0 и вместо отброса события будет его обрабатывать (хотя как помним первый отослал non zero!)
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #13 - 02. Октября 2006 :: 05:35
Печать  
Цитата:
Цитата:
Что-то не срастаеться, есть желание сделать демку с 2мя хуками показать следующее, если первый хук возвращает всегда 0, тогда вне зависимости возращаемого значения второй ловушкой, тагет получит событие. (К сожалению времени счас мало попробую сделать после выходных)


Перечитал, понял что прогнал лажу, всё должно быть вот так:
первый должен возвращать не ноль (например +1), второй должен слать 0 (типа как было изначально в ВК), тогда третий хук получить code=0 и вместо отброса события будет его обрабатывать (хотя как помним первый отослал non zero!)

Если первый отрабатывает сообщение и дальше его нельзя отработать, то он вернет не ноль и просто не вызовет следующий хук. А основной обработчик сообщений при возврате ненулевого их хука, не будет отрабатывать это сообщение. ИМХО, так.
  

FormEx developer
Наверх
www  
IP записан
 
Dave Owen OWL
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 26. Сентября 2006
Пол: Мужской
Re: Загрузка CPU 20% от простого двиганья мышкой
Ответ #14 - 02. Октября 2006 :: 06:20
Печать  
Вызывать следующий Хук обязан ВСЕГДА, управлять можешь только обрабатываемым кодом, если передаешь положительное или нулевое значение, тем самым говоришь следующему "попробуй обработай, может это тебе?". Если передаешь <0, тогда вспомни собственный код, что ты там делаешь если тебе передали code<0 ?
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать