ちょっと位置情報がおかしかったみたいなので、昨日のをちょっと改良。
CoordMode, Mouse, Screen
XButton1::
MouseGetPos, sx, sy, hwnd, ctrl, 1
WinGetPos, wx, wy, , , ahk_id %hwnd%
while GetKeyState("XButton1", "P")
{
MouseGetPos, x, y
delta := sy - y
if(delta != 0)
{
;; http://msdn.microsoft.com/en-us/library/aa923539.aspx ?
wParam := 0x10000 * 120 * (delta / Abs(delta))
lParam := (sx + wx) + ((sy + wy) * 0x10000)
;; accel = (delta^2 / 400)
loop % (Ceil((delta ** 2) / 400))
{
PostMessage, 0x20A, %wParam%, %lParam%, %ctrl%, ahk_id %hwnd%
if(!GetKeyState("XButton1", "P"))
break
}
MouseMove, sx, sy, 0
}
}
;; immediately up == clicked
if(A_TimeSinceThisHotkey < 300)
MouseClick, X1, sx, sy, 1, 0
return
4行目の ahk_id %hwnd% は A に変えないとダメかな。