X-scrollwheel no Windows

1

Existe alguma maneira de ter eventos de roda do mouse enviados para qualquer janela abaixo do ponteiro do mouse, mesmo que não seja a janela ativa? Eu gostaria de ter recursos de roda de rolagem x sem ter que ativar x-mouse.

    
por Chris Charabaruk 13.10.2009 / 21:19

2 respostas

2

Não tenho certeza se isso é suportado no Windows nativamente, mas um programa chamado KatMouse deve fazer exatamente isso:

The prime purpose of the KatMouse utility is to enhance the functionality of mice with a scroll wheel, offering 'universal' scrolling: moving the mouse wheel will scroll the window directly beneath the mouse cursor (not the one with the keyboard focus, which is default on Windows OSes). This is a major increase in the usefullness of the mouse wheel.

KatMouse

    
por 13.10.2009 / 21:23
2

Autohotkey!

CoordMode, Mouse, Screen
SetWinDelay, -1
SetBatchLines,-1
SetKeyDelay, -1

; acceleration
_WHEELACC=0x280000
; max speed
_WHEELMAXN=0x1800000
; automatically activate window
_WHEELAUTOFOCUS=1

return


EasyWheel(d)
; if _WHEELAUTOFOCUS if set, check which window is under the mouse and gives it focus if it hasn't already
; then send scroll event to the control under the mouse
; original code from Shimanov: http://www.autohotkey.com/forum/viewtopic.php?t=6772#54821
{
Global _WHEELACC
   , _WHEELMAXN
   , _WHEELAUTOFOCUS
Static t, s


   if ( A_TickCount > 500+t) {
      t := A_TickCount
      s :=0x780000
   }
   else if (s < _WHEELMAXN)
      s += _WHEELACC

   MouseGetPos x, y, hwnd
   h := DllCall("WindowFromPoint", "int", x, "int", y)
   if _WHEELAUTOFOCUS && (hwnd<>WinExist("A"))
      WinActivate, ahk_id %hwnd%
   SendMessage, 0x20A, d*s,(y<<16)|x,, ahk_id %h%
}


WheelUp:: EasyWheel(1)
WheelDown:: EasyWheel(-1) 

(Extraído do encadeamento vinculado no comentário do script)

AHK pode fazer qualquer coisa: 3

    
por 13.10.2009 / 21:31