Форум » » [АНОНС] Новая версия Mouse Hunter 1.71 » Ответить

[АНОНС] Новая версия Mouse Hunter 1.71

Carc: Выпущена новая версия Mouse Hunter 1.71 Выложил сабж - Mouse Hunter - бесплатная утилита, которая оптимизирует работу с мышью... (читать далее), про который говорил здесь... [quote] Есть в Aml Pages такая фигня, как умный mouse wheel, когда по вращению колесика мыши скроллится не панель с фокусом ввода (панель, которая будет принимать клавиатурный ввод), а панель именно под курсором мыши. Дык вот написана отдельная тулза, которая оный фокес-покес распространяет на всю систему Windows (благо надоело лажаться в остальных программах). Писалось что называется на интерес, софтина фришная. Рабочее название Mouse Hunter (сдвоенная система: очень тонкий агент, который выполняет всю полезную работу, и отдельный exe-шник на модной библиотеке для конфигурирования. Потому и отдельный, что для модного интерфейса настроек. В момент выполнения полезной работы сама "модная" библиотека не нужна). Кому нить надо такое софтино? Могу выложить на сайт? Тока эта... (C) Чего там в описании писать, бог его знает... Ну не филолог я Может народ поможет? [/quote]

Ответов - 240, стр: 1 2 3 4 5 6 7 8 9 10 11 12 All

DenisSMI: Carc пишет: Дык я про то и говорю, что клик средней кнопкой мыши неочевиден для обычного домотканного, посконного пользователя. А уж клик средней кнопкой мыши да еще и в трее - тем более не очевиден... Не догадаются. А уж о том, что клик средней кнопкой в трее - тем паче загадка за семью печатями Домотканные и посконные пускай из меню вызывают, а мы - знающие и продвинутые - будем пользоваться средней кнопкой!

Carc: DenisSMI пишет: Домотканные и посконные пускай из меню вызывают, а мы - знающие и продвинутые - будем пользоваться средней кнопкой! В общем, извернулся я... Будет обработка и двойного, и одиночного клика... Скоро выложу.

DenisSMI: Carc пишет: В общем, извернулся я... Будет обработка и двойного, и одиночного клика... Скоро выложу.


Carc: В смысле уже выложил... там по дате видно, разве что номер сборки сменился..

DenisSMI: Carc пишет: В смысле уже выложил... там по дате видно, разве что номер сборки сменился.. Всё отлично. Спасибо. Изворот удался

Carc: Там только с интервалами задержек нужно поиграться - все в принципе стандартно, но все же...

DenisSMI: Постоянно перестает работать. Нужно заново вызывать главное окно, нажимать на ОК и тогда все опять в порядке.

Carc: DenisSMI пишет: Постоянно перестает работать. Нужно заново вызывать главное окно, нажимать на ОК и тогда все опять в порядке. Да, странно - но иногда такое происходит. Обычно достаточно сделать ВКЛ\ВЫКЛ по иконке. Не пойму отчего это происходит...

DrakonHaSh: а можно добавить фичу горизонтальной прокрутки ? например так: просто колесико мышки => вертикальная прокрутка колесико мышки + горячая клавиша => горизонтальная прокрутка

Carc: DrakonHaSh пишет: а можно добавить фичу горизонтальной прокрутки ? например так: просто колесико мышки => вертикальная прокрутка колесико мышки + горячая клавиша => горизонтальная прокрутка Прокрутки чего именно?

Carc: И какая клавиша? Какая нить ctrl к примеру?

DrakonHaSh: Carc пишет: Прокрутки чего именно? содержимого контрола над которым находится курсор. сейчас Mouse Hunter, если можно так выразится, воздействует на вертикальную прокрутку, я предлагают добавить дополнительно фичу "воздействия" на горизонтальную прокрутку. Carc пишет: И какая клавиша? Какая нить ctrl к примеру? лучше сделать эту клавишу настраиваемой. ctrl+колесико мыши часто используется для изменения масштаба. нажатие Alt вызывает обычно меню. Поэтому наверное Shift по дефолту был бы самым беспроблемным вариантом.

Carc: DrakonHaSh пишет: лучше сделать эту клавишу настраиваемой. ctrl+колесико мыши часто используется для изменения масштаба. нажатие Alt вызывает обычно меню. Поэтому наверное Shift по дефолту был бы самым беспроблемным вариантом. ОК, подумаю...

GrelVl: Хук слетат в момент закрытия какого-нибудь приложения. Почему - не разобрался. Кстати, Carc, зачем используешь file mapping? Если только чтобы хэндл хука передать, то на NT линейке можно обойтись без него. Если я правильно понял, ты удаляешь оригинальные WM_MOUSEWHEEL с помощью PeakMessage. Зачем? И еще, "уточнение" окна под курсором путем поиска наименьшего в этой точке, принадлежащего тому же родителю - не самый точный способ. Хотя и лучше чем просто WindowFromPoint.

Carc: GrelVl пишет: Хук слетат в момент закрытия какого-нибудь приложения. Почему - не разобрался. Как ты это определяешь? GrelVl пишет: Кстати, Carc, зачем используешь file mapping? Если только чтобы хэндл хука передать, то на NT линейке можно обойтись без него. Нет, хук ему и проще можно передать. Это нужно чтобы передавать классы окон для pessimisctic strategy (для optimistic по идее можно и без них обойтись). GrelVl пишет: Если я правильно понял, ты удаляешь оригинальные WM_MOUSEWHEEL с помощью PeakMessage. Зачем? Оно ж в таргетное окно летит, а я его оттуда вынимаю, и пересылаю куда нужно. Зачем тогда отправлять его и с в изначальное окно? GrelVl пишет: И еще, "уточнение" окна под курсором путем поиска наименьшего в этой точке, принадлежащего тому же родителю - не самый точный способ. Хотя и лучше чем просто WindowFromPoint. Ну а какие мысли вслух: WindowFromPointХХ - частенько лажают, AccessibleObjectFromPoint - мысль, не пробовал, но нах, а если IAcessible не вернется потому как какое-нить китайское полудуро вроде Оперы даже и не представляет что это такое? Я других вариантов вроде бы не вижу... PS: весьма любопытные замечания. Откуда дровишки, если не секрет? И как определяешь что хук слетел? WH_DEBUG?

GrelVl: Carc пишет: И как определяешь что хук слетел? WH_DEBUG? Да нет, просто есть у меня тузла, которая показывает какие модули какие хуки установили. В ней вижу, что SMW.dll установил WH_GETMESSAGE. Также вижу, что SMW.dll пропадает из списка, когда закрывается какое-то приложение. Carc пишет: Оно ж в таргетное окно летит, а я его оттуда вынимаю, и пересылаю куда нужно. Так вынимать не обязательно, достаточно вернуть результат твоего обработчика ловушки, отличный от 0. Так стоп, у тебя же хук на GetMessage, а он не позволяет отменить сообщение. Ну тогда все нормально. А я, когда этим хуком пользовался, для отмены сообщения просто заменял его на WM_NULL. Благо, модифицировать сообщения этот хук позволяет. По поводу определения окна под курсором, я долго бился над этой проблемой. И как это не смешно, но просветлление пришло после прочтения одной из статей из серии для чайников. В ней рассказывалось о классах окон в Windows и о том, на что они влияют. Вобщем алгоритм я вывел, но он получился громоздким и неслабо грузил процессор. И дело не в том, что код не оптимален, просто там приходится многократно в цикле вызавать несколько api. И наверное, другого способа точно определить окно под курсором нет. Зато окна определяет так, что некоторым платным тузлам и не снилось. По ходу такой же алгоритм использует и KatMouse. Кстати, на мой взгляд KatMouse - лучшая прога подобного рода именно с точки зрения технической реализации. Про ее юзабилити я не буду говорить, многим она не нравится, но то, с какой легкостью автору удалось разрешить некоторые технические проблемы, впечетляет. Я декомпилил ее, но листинг получися ужасно читаемым. От попытки его понять в голове образровалась каша, однако некоторые моменты отложились и потом, когда я до чего-то доходил сам, то вдруг понимал, что в KatMouse именно так и сделано. Ну ты уже наверное понял, что MouseHunter а тоже декомпилил. Результат конечно удобочитаемым не назовешь, но разобраться можно. А вообще я подобную прогу разрабатываю уже давно. Сейчас временная передышка, никак с силами не соберусь.

Carc: GrelVl пишет: Да нет, просто есть у меня тузла, которая показывает какие модули какие хуки установили. В ней вижу, что SMW.dll установил WH_GETMESSAGE. Также вижу, что SMW.dll пропадает из списка, когда закрывается какое-то приложение. Что за тулза, если не секрет? Архинаиполезнейший же Вам доложу (С) струмент же в работе?

Carc: GrelVl пишет: Ну тогда все нормально. А я, когда этим хуком пользовался, для отмены сообщения просто заменял его на WM_NULL. Благо, модифицировать сообщения этот хук позволяет. Да, пожалуй это будет логичнее как-то. GrelVl пишет: По поводу определения окна под курсором, я долго бился над этой проблемой. И как это не смешно, но просветлление пришло после прочтения одной из статей из серии для чайников. В ней рассказывалось о классах окон в Windows и о том, на что они влияют. Вобщем алгоритм я вывел, но он получился громоздким и неслабо грузил процессор. И дело не в том, что код не оптимален, просто там приходится многократно в цикле вызавать несколько api. И наверное, другого способа точно определить окно под курсором нет. Зато окна определяет так, что некоторым платным тузлам и не снилось. По ходу такой же алгоритм использует и KatMouse. Кстати, на мой взгляд KatMouse - лучшая прога подобного рода именно с точки зрения технической реализации. Про ее юзабилити я не буду говорить, многим она не нравится, но то, с какой легкостью автору удалось разрешить некоторые технические проблемы, впечетляет. Я декомпилил ее, но листинг получися ужасно читаемым. От попытки его понять в голове образровалась каша, однако некоторые моменты отложились и потом, когда я до чего-то доходил сам, то вдруг понимал, что в KatMouse именно так и сделано. Хм, а классы тут причем? Как бы для чего: прозрачность или что? есть кое-какие идее про слать WM_HITTEST но до ума я эти мысли так и не довел...

GrelVl: Carc пишет: Хм, а классы тут причем? Сейчас уже и сам не вспомню, но здесь главное разобраться с классом WS_CLIPSIBLINGS. Его наличие/отсутствие сильно влияет на z-order окна. А вообще мой код ищет самого верхнего родителя того что под курсором, а потом начинает перебирать его детей, выполняя при этом кучу проверок. Проверки устроены так, что программа проходит единственно верный путь в дереве окон, не заруливая в ненужные ветки. По сути программа обрабатывает дерево плостами, при каждой интерации цикла находя окно, которое визуально находится выше всех на этом уровне вложенности.

Carc: GrelVl пишет: Сейчас уже и сам не вспомню, но здесь главное разобраться с классом WS_CLIPSIBLINGS. Его наличие/отсутствие сильно влияет на z-order окна. А вообще мой код ищет самого верхнего родителя того что под курсором, а потом начинает перебирать его детей, выполняя при этом кучу проверок. Проверки устроены так, что программа проходит единственно верный путь в дереве окон, не заруливая в ненужные ветки. По сути программа обрабатывает дерево плостами, при каждой интерации цикла находя окно, которое визуально находится выше всех на этом уровне вложенности. Да, такой код на каждом шорохе мыша дело тяжелое конечно... Но вроде мой вычислятор по размерам тоже сносно работает: я по моему только раз видел когда он облажался. В принципе для моих задач вроде бы хватает.



полная версия страницы