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