На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Колёсико мыши и трей , Как отловить?
    Приложение выставляет иконку в трей. Нужно, чтобы была реакция на прокрутку колёсика на иконке (как это реализовано в AIMP, но и там это работает только при активном окне, а надо чтобы всегда). Суть проблемы - при прокрутке колеса вообще никакие сообщения приложению не отсылаются. Конечно, можно сделать глобальный хук, но:
    во-1 - как отследить, что под курсором именно моя иконка?
    во-2 не хочется грузить ЦП бесполезной работой.
    Есть у кого какие предложения?

    Добавлено
    Апдейт: глобальный хук можно поставить только через DLL, что крайне нежелательно.
      Апдейт 2: AIMP, оказывается, при активном окне реагирует на колесо в любой части экрана. Видать, там как раз глобальный хук и стоит. Этот пример исключаем из рассмотрения.
        When the uVersion member is either 0 or NOTIFYICON_VERSION, the wParam parameter of the message contains the identifier of the taskbar icon in which the event occurred. This identifier can be 32 bits in length. The lParam parameter holds the mouse or keyboard message associated with the event. For example, when the pointer moves over a taskbar icon, lParam is set to WM_MOUSEMOVE.

        https://msdn.microsoft.com/en-us/library/wi...2(v=vs.85).aspx
        вроде бы должно сработать
          Fr0sT, т.е. вы всё-таки предлагаете глобальный хук?
            Судя по справке, должны приходить мышиные сообщения, в т.ч. и WM_MOUSEWHEEL.
              Fr0sT, ну вот попробуйте сами))
              Прикреплённый файлПрикреплённый файлTrayIconMessages.zip (3,62 Кбайт, скачиваний: 177)
                Во-первых, параметр не TMsg, а TMessage, иначе данные в обработчик приходят "сдвинутыми". Что интересно, установка uVersion в NOTIFYICON_VERSION_4 никак не влияет, хотя по справке должно.
                Во-вторых, сообщения от колеса приходят только на фокусированный контрол. Именно так и работает AIMP. Справка говорит, что так и должно быть: "Sent to the focus window when the mouse wheel is rotated". Так что иконке сообщение не придет, увы :(.
                  Fr0sT,
                  Цитата
                  Так что иконке сообщение не придет, увы

                  Это я уже давно понял. Вот и пытаюсь выяснить, как сделать это обходными путями?
                    Без хука имхо никак.
                    Ну или такой костыль: по входу мыши на иконку показывать окно за пределами экрана и делать его фокусированным. Оно и получит события колесика. По уходу мыши - прятать его. Правда, уход отслеживать придется тупо по таймеру
                    Сообщение отредактировано: Fr0sT -
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0360 ]   [ 18 queries used ]   [ Generated: 28.03.24, 19:08 GMT ]