Вышел вот такой вот скрипт, недостаток в том что он прокручивает поочерёдно по горизонтали и по вертикали, для прокрутки по диагонали необходимо немного доработать
CoordMode Mouse, Screen
VarSetCapacity(pt,8)
ScrlIgnoreStyle:=0
^RButton::
MouseGetPos prevmx,prevmy,hParentWnd,hChildWnd,2
if !hChildWnd
hChildWnd:=hParentWnd
SendMessage 132,0,prevmy<<16|prevmx,,ahk_id %hChildWnd% ; WM_NCHITTEST 132
if ErrorLevel<>1 ; HTCLIENT 1
return
if !ScrlIgnoreStyle
{
; WS_HSCROLL 0x100000 WS_VSCROLL 0x200000
WndStyle:=DllCall("GetWindowLong","uint",hChildWnd,"int",-16) ; GWL_STYLE -16
if (WndStyle&0x200000)
ScrlV:=1
else ScrlV:=0
if (WndStyle&0x100000)
ScrlH:=1
else ScrlH:=0
if !(ScrlV|ScrlH)
{
WndStyle:=DllCall("GetWindowLong","uint",hChildWnd,"int",-16) ; GWL_STYLE -16
if (WndStyle&0x200000)
ScrlV:=1
else ScrlV:=0
if (WndStyle&0x100000)
ScrlH:=1
else ScrlH:=0
}
if !(ScrlV|ScrlH)
return
}
While % GetKeyState("RButton","P")
{
DllCall("GetCursorPos","uint",&pt)
mx:=NumGet(pt), my:=NumGet(&pt+4)
scrllr:=prevmx-mx,scrlud:=prevmy-my
if ScrlH|ScrlIgnoreStyle
if (scrllr>0)
{
Loop % scrllr
SendMessage 276,0,0,,ahk_id %hChildWnd%
prevmx:=mx
}
else if (scrllr<0)
{
Loop % Abs(scrllr)
SendMessage 276,1,0,,ahk_id %hChildWnd%
prevmx:=mx
}
if ScrlV|ScrlIgnoreStyle
if (scrlud>0)
{
Loop % scrlud
SendMessage 277,0,0,,ahk_id %hChildWnd%
;Send {WheelUp}
prevmy:=my
}
else if (scrlud<0)
{
Loop % Abs(scrlud)
SendMessage 277,1,0,,ahk_id %hChildWnd%
;Send {WheelDown}
prevmy:=my
}
;DllCall("ScrollWindow","uint",hChildWnd,"int",prevmx-mx,"int",prevmy-my,"uint",0,"uint",0)
;ToolTip % "lr " scrllr " ud " scrlud
Sleep 250
}
return
+ScrollLock::
ScrlIgnoreStyle:=!ScrlIgnoreStyle
return
Esc::
ExitApp
/*
WM_HSCROLL 276
WM_VSCROLL 277
WM_NCHITTEST 132
SB_LINEUP 0
SB_LINEDOWN 1
SB_LINELEFT 0
SB_LINERIGHT 1
SB_PAGEUP 2
SB_PAGEDOWN 3
SB_PAGELEFT 2
SB_PAGERIGHT 3
SB_THUMBPOSITION 4
SB_THUMBTRACK 5
SB_ENDSCROLL 8
HTERROR (-2)
HTTRANSPARENT (-1)
HTNOWHERE 0
HTCLIENT 1
HTCAPTION 2
HTSYSMENU 3
HTGROWBOX 4
HTSIZE 4
HTMENU 5
HTHSCROLL 6
HTVSCROLL 7
HTMINBUTTON 8
HTMAXBUTTON 9
HTREDUCE 8
HTZOOM 9
HTLEFT 10
HTSIZEFIRST 10
HTRIGHT 11
HTTOP 12
HTTOPLEFT 13
HTTOPRIGHT 14
HTBOTTOM 15
HTBOTTOMLEFT 16
HTBOTTOMRIGHT 17
HTSIZELAST 17
HTBORDER 18
HTOBJECT 19
HTCLOSE 20
HTHELP 21
*/