Есть в Aml Pages такая фигня, как умный mouse wheel, когда по вращению колесика мыши скроллится не панель с фокусом ввода (панель, которая будет принимать клавиатурный ввод), а панель именно под курсором мыши.
Дык вот написана отдельная тулза, которая оный фокес-покес распространяет на всю систему Windows (благо надоело лажаться в остальных программах). Писалось что называется на интерес, софтина фришная.
Рабочее название Mouse Hunter (сдвоенная система: очень тонкий агент, который выполняет всю полезную работу, и отдельный exe-шник на модной библиотеке для конфигурирования. Потому и отдельный, что для модного интерфейса настроек. В момент выполнения полезной работы сама "модная" библиотека не нужна).
Кому нить надо такое софтино? Могу выложить на сайт?
Тока эта... (C) Чего там в описании писать, бог его знает... Ну не филолог я Может народ поможет?
Post №: 1093
Joined: 16.04.10
Location: Cеверная столица
Rank:
0
Posted: 06.10.11 23:35. Post subject: Carc пишет: Дык я ..
Carc пишет:
quote:
Дык я про то и говорю, что клик средней кнопкой мыши неочевиден для обычного домотканного, посконного пользователя. А уж клик средней кнопкой мыши да еще и в трее - тем более не очевиден... Не догадаются. А уж о том, что клик средней кнопкой в трее - тем паче загадка за семью печатями
Домотканные и посконные пускай из меню вызывают, а мы - знающие и продвинутые - будем пользоваться средней кнопкой!
Posted: 25.10.11 14:18. Post subject: Carc пишет: Прокрут..
Carc пишет:
quote:
Прокрутки чего именно?
содержимого контрола над которым находится курсор. сейчас Mouse Hunter, если можно так выразится, воздействует на вертикальную прокрутку, я предлагают добавить дополнительно фичу "воздействия" на горизонтальную прокрутку.
Carc пишет:
quote:
И какая клавиша? Какая нить ctrl к примеру?
лучше сделать эту клавишу настраиваемой. ctrl+колесико мыши часто используется для изменения масштаба. нажатие Alt вызывает обычно меню. Поэтому наверное Shift по дефолту был бы самым беспроблемным вариантом.
Post №: 5506
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 25.10.11 14:27. Post subject: DrakonHaSh пишет: л..
DrakonHaSh пишет:
quote:
лучше сделать эту клавишу настраиваемой. ctrl+колесико мыши часто используется для изменения масштаба. нажатие Alt вызывает обычно меню. Поэтому наверное Shift по дефолту был бы самым беспроблемным вариантом.
Posted: 17.11.11 07:21. Post subject: Хук слетат в момент ..
Хук слетат в момент закрытия какого-нибудь приложения. Почему - не разобрался. Кстати, Carc, зачем используешь file mapping? Если только чтобы хэндл хука передать, то на NT линейке можно обойтись без него. Если я правильно понял, ты удаляешь оригинальные WM_MOUSEWHEEL с помощью PeakMessage. Зачем? И еще, "уточнение" окна под курсором путем поиска наименьшего в этой точке, принадлежащего тому же родителю - не самый точный способ. Хотя и лучше чем просто WindowFromPoint.
Post №: 5541
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 17.11.11 11:47. Post subject: GrelVl пишет: Хук с..
GrelVl пишет:
quote:
Хук слетат в момент закрытия какого-нибудь приложения. Почему - не разобрался.
Как ты это определяешь?
GrelVl пишет:
quote:
Кстати, Carc, зачем используешь file mapping? Если только чтобы хэндл хука передать, то на NT линейке можно обойтись без него.
Нет, хук ему и проще можно передать. Это нужно чтобы передавать классы окон для pessimisctic strategy (для optimistic по идее можно и без них обойтись).
GrelVl пишет:
quote:
Если я правильно понял, ты удаляешь оригинальные WM_MOUSEWHEEL с помощью PeakMessage. Зачем?
Оно ж в таргетное окно летит, а я его оттуда вынимаю, и пересылаю куда нужно. Зачем тогда отправлять его и с в изначальное окно?
GrelVl пишет:
quote:
И еще, "уточнение" окна под курсором путем поиска наименьшего в этой точке, принадлежащего тому же родителю - не самый точный способ. Хотя и лучше чем просто WindowFromPoint.
Ну а какие мысли вслух: WindowFromPointХХ - частенько лажают, AccessibleObjectFromPoint - мысль, не пробовал, но нах, а если IAcessible не вернется потому как какое-нить китайское полудуро вроде Оперы даже и не представляет что это такое? Я других вариантов вроде бы не вижу...
PS: весьма любопытные замечания. Откуда дровишки, если не секрет? И как определяешь что хук слетел? WH_DEBUG?
Posted: 17.11.11 13:42. Post subject: Carc пишет: И как о..
Carc пишет:
quote:
И как определяешь что хук слетел? WH_DEBUG?
Да нет, просто есть у меня тузла, которая показывает какие модули какие хуки установили. В ней вижу, что SMW.dll установил WH_GETMESSAGE. Также вижу, что SMW.dll пропадает из списка, когда закрывается какое-то приложение. Carc пишет:
quote:
Оно ж в таргетное окно летит, а я его оттуда вынимаю, и пересылаю куда нужно.
Так вынимать не обязательно, достаточно вернуть результат твоего обработчика ловушки, отличный от 0. Так стоп, у тебя же хук на GetMessage, а он не позволяет отменить сообщение. Ну тогда все нормально. А я, когда этим хуком пользовался, для отмены сообщения просто заменял его на WM_NULL. Благо, модифицировать сообщения этот хук позволяет. По поводу определения окна под курсором, я долго бился над этой проблемой. И как это не смешно, но просветлление пришло после прочтения одной из статей из серии для чайников. В ней рассказывалось о классах окон в Windows и о том, на что они влияют. Вобщем алгоритм я вывел, но он получился громоздким и неслабо грузил процессор. И дело не в том, что код не оптимален, просто там приходится многократно в цикле вызавать несколько api. И наверное, другого способа точно определить окно под курсором нет. Зато окна определяет так, что некоторым платным тузлам и не снилось. По ходу такой же алгоритм использует и KatMouse. Кстати, на мой взгляд KatMouse - лучшая прога подобного рода именно с точки зрения технической реализации. Про ее юзабилити я не буду говорить, многим она не нравится, но то, с какой легкостью автору удалось разрешить некоторые технические проблемы, впечетляет. Я декомпилил ее, но листинг получися ужасно читаемым. От попытки его понять в голове образровалась каша, однако некоторые моменты отложились и потом, когда я до чего-то доходил сам, то вдруг понимал, что в KatMouse именно так и сделано. Ну ты уже наверное понял, что MouseHunter а тоже декомпилил. Результат конечно удобочитаемым не назовешь, но разобраться можно. А вообще я подобную прогу разрабатываю уже давно. Сейчас временная передышка, никак с силами не соберусь.
Post №: 5543
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 17.11.11 14:50. Post subject: GrelVl пишет: Да не..
GrelVl пишет:
quote:
Да нет, просто есть у меня тузла, которая показывает какие модули какие хуки установили. В ней вижу, что SMW.dll установил WH_GETMESSAGE. Также вижу, что SMW.dll пропадает из списка, когда закрывается какое-то приложение.
Что за тулза, если не секрет? Архинаиполезнейший же Вам доложу (С) струмент же в работе?
Post №: 5544
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 17.11.11 14:55. Post subject: GrelVl пишет: Ну т..
GrelVl пишет:
quote:
Ну тогда все нормально. А я, когда этим хуком пользовался, для отмены сообщения просто заменял его на WM_NULL. Благо, модифицировать сообщения этот хук позволяет.
Да, пожалуй это будет логичнее как-то.
GrelVl пишет:
quote:
По поводу определения окна под курсором, я долго бился над этой проблемой. И как это не смешно, но просветлление пришло после прочтения одной из статей из серии для чайников. В ней рассказывалось о классах окон в Windows и о том, на что они влияют. Вобщем алгоритм я вывел, но он получился громоздким и неслабо грузил процессор. И дело не в том, что код не оптимален, просто там приходится многократно в цикле вызавать несколько api. И наверное, другого способа точно определить окно под курсором нет. Зато окна определяет так, что некоторым платным тузлам и не снилось. По ходу такой же алгоритм использует и KatMouse. Кстати, на мой взгляд KatMouse - лучшая прога подобного рода именно с точки зрения технической реализации. Про ее юзабилити я не буду говорить, многим она не нравится, но то, с какой легкостью автору удалось разрешить некоторые технические проблемы, впечетляет. Я декомпилил ее, но листинг получися ужасно читаемым. От попытки его понять в голове образровалась каша, однако некоторые моменты отложились и потом, когда я до чего-то доходил сам, то вдруг понимал, что в KatMouse именно так и сделано.
Хм, а классы тут причем? Как бы для чего: прозрачность или что? есть кое-какие идее про слать WM_HITTEST но до ума я эти мысли так и не довел...
Posted: 17.11.11 15:39. Post subject: Carc пишет: Хм, а к..
Carc пишет:
quote:
Хм, а классы тут причем?
Сейчас уже и сам не вспомню, но здесь главное разобраться с классом WS_CLIPSIBLINGS. Его наличие/отсутствие сильно влияет на z-order окна. А вообще мой код ищет самого верхнего родителя того что под курсором, а потом начинает перебирать его детей, выполняя при этом кучу проверок. Проверки устроены так, что программа проходит единственно верный путь в дереве окон, не заруливая в ненужные ветки. По сути программа обрабатывает дерево плостами, при каждой интерации цикла находя окно, которое визуально находится выше всех на этом уровне вложенности.
Post №: 5548
Joined: 28.05.05
Location: Россия, Москва
Rank:
2
Posted: 17.11.11 15:42. Post subject: GrelVl пишет: Сейча..
GrelVl пишет:
quote:
Сейчас уже и сам не вспомню, но здесь главное разобраться с классом WS_CLIPSIBLINGS. Его наличие/отсутствие сильно влияет на z-order окна. А вообще мой код ищет самого верхнего родителя того что под курсором, а потом начинает перебирать его детей, выполняя при этом кучу проверок. Проверки устроены так, что программа проходит единственно верный путь в дереве окон, не заруливая в ненужные ветки. По сути программа обрабатывает дерево плостами, при каждой интерации цикла находя окно, которое визуально находится выше всех на этом уровне вложенности.
Да, такой код на каждом шорохе мыша дело тяжелое конечно... Но вроде мой вычислятор по размерам тоже сносно работает: я по моему только раз видел когда он облажался. В принципе для моих задач вроде бы хватает.
All times are GMT
3 Hours. Hits today: 2
You can: smiles yes, images yes, types yes, poll no
avatars yes, links on, premoderation off, edit new post no