1

Тема: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

ссылка на Коллекцию
В TotalCommander-е есть свой просмотрщик - Lister (ahk_class TLister). При выключенном скрипте - колесико прокручивает текст. При включённом - не реагирует на колесо.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

2

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Да, есть окна, которые не реагируют. Смутно помню, что было какое-то решение для по крайней мере некоторых из них, и я его у себя пробовал. Но т.к. из-за него появлялись какие-то глюки с "нормальными" окнами, я от него отказался. В чём там была фишка и где я брал решение, к сожалению, напрочь забылось. Возможно, на англофоруме.

3

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Альтернативное решение — настроить Windows так, чтобы окно активировалось при наведении курсора, но при этом не выходило на передний план.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

teadrinker пишет:

Альтернативное решение — настроить Windows так, чтобы окно активировалось при наведении курсора, но при этом не выходило на передний план.

Про какую винду идет речь? В winXP таких настроек что-то не припомню.

5

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Есть и в XP и в семёрке. Настраивается через реестр. Но сейчас не помню, это погуглить надо.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: creature.ws, 2012-09-14 11:50:14)

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferencesMask

REG_BINARY, изменить на 9F 3E 05 80.

7

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

+перезагрузка.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Или logout + login

9

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Или EnvUpdate

10

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Ух ты, даже не знал про неё!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

По идее, команда должна лишь уведомлять приложения о изменении переменных окружения.

12 (изменено: Mikki, 2012-09-14 21:24:46)

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Это не альтернатива - при работе скрипта, если в окне два списка, прокручивается тот список который под мышкой. В варианте teadrinker-а - прокручивается тот в котором стоит курсор.

Продолжаю про "не прокручивание с помощью скрипта" - а в чем там проблема? Lister не понимает SendMessage, 0x20A,..?

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

13

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

Вопрос озвученный выше в силе.

Жизнь стоит того чтобы не быть сволочью. (с) Разные Люди

14 (изменено: Alectric, 2012-12-23 22:10:02)

Re: АНК : (из Коллекци)Прокрутка окна под курсором мыши без активации окна

На windows 7 скрипт не работает в большинстве программ.
Я пользуюсь этим вариантом:

~*$WheelDown::
~*$WheelUp::
stringtrimleft,Wheel,A_ThisHotkey,3
keywait,%a_thishotkey%,L
if Wheell=0
  return

mousegetpos,ctrlx,,win,ctrl
winget,id,id,A
if (win!=id)
{
  if ctrl=
    winactivate,ahk_id %win%
  else
  {
    ControlGet,Style,Style,,%ctrl%,ahk_id %win%
    if (Style & 0x00100000)
    {
      ControlGetPos,Xctrl,,ctrlW,,%ctrl%,ahk_id %win%
      winGetPos,wx,,ww,,ahk_id %win%
      ctrlxz:=ctrlx-(wx+Xctrl)
      checks:=ctrlxz*100/ctrlW
      if (checks>70 and checks<100)
      {
        if Wheel=WheelDown
          loop,6
            PostMessage,0x114,1,0,%ctrl%,ahk_id %win%
        if Wheel=WheelUp
          loop,6
            PostMessage,0x114,0,0,%ctrl%,ahk_id %win%
      }
      else
      {

        if Wheel=WheelDown
          PostMessage,0x115,1,0,%ctrl%,ahk_id %win%
        if Wheel=WheelUp
          PostMessage,0x115,0,0,%ctrl%,ahk_id %win%
      }
    }
    else
    {
      if Wheel=WheelDown
        PostMessage,0x115,1,0,%ctrl%,ahk_id %win%
      if Wheel=WheelUp
        PostMessage,0x115,0,0,%ctrl%,ahk_id %win%
    }
  }
}
else
{
  ControlGet,Style,Style,,%ctrl%,ahk_id %id%
  if (Style & 0x00100000)
  {
    ControlGetPos,Xctrl,,ctrlW,,%ctrl%,ahk_id %id%
    winGetPos,wx,,ww,,ahk_id %id%
    ctrlxz:=ctrlx-(wx+Xctrl)
    checks:=ctrlxz*100/ctrlW
    if (checks>70 and checks<100)
    {
      if Wheel=WheelDown
      {
        loop,6
          PostMessage,0x114,1,0,%ctrl%,ahk_id %id%
        PostMessage,0x115,0,0,%ctrl%,ahk_id %id%
      }
      if Wheel=WheelUp
      {
        loop,6
          PostMessage,0x114,0,0,%ctrl%,ahk_id %id%
        PostMessage,0x115,1,0,%ctrl%,ahk_id %id%
      }
    }
 }
}
return

Возможно его можно оптимизировать...

Также есть возможность горизонтальной прокрутки если положение мыши в пределах 30 % от правого края контрола (не окна).
Есть только две проблемы:
1) Вращение ролика посылается и в активное окно тоже, можно конечно убрать "~*$", но тогда теряется способность нормально работать в других (некоторых) приложениях, которым нужна "чистая" передача вращения.

2) По той же причине при прокрутке горизонтальной полосы окна, окно прокручивается вверх и влево, вниз и вправо. Исправил возвратом окна вниз и вверх соответственно, но явно видны дерганья.

Если возможно исправить не убирая "~*$" буду очень благодарен.
Возможно добавить ускорение прокрутки.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.