![Windows 中的 X 滚轮](https://linux22.com/image/1218577/Windows%20%E4%B8%AD%E7%9A%84%20X%20%E6%BB%9A%E8%BD%AE.png)
有没有办法将鼠标滚轮事件发送到鼠标指针下方的任何窗口,即使它不是活动窗口?我希望拥有 x-scrollwheel 功能,而无需打开 x-mouse。
答案1
我不确定 Windows 本身是否支持此功能,但一个名为 KatMouse 的程序应该可以做到这一点:
KatMouse 实用程序的主要目的是增强带滚轮的鼠标的功能,提供“通用”滚动功能:移动鼠标滚轮将滚动鼠标光标正下方的窗口(而不是带有键盘焦点的窗口,这是 Windows 操作系统的默认设置)。这大大提高了鼠标滚轮的实用性。
答案2
自动热键!
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)
(取自脚本注释中的链接线程)
AHK 可以做任何事情 :3