AHK скрипт,два монитора не понятно

Есть Скрипт,когда использую 1 монитор,работает корректно,но когда подключается ещё один,все ломается и начинает кликать не в тех местах,забивая на все координаты которые я предоставлял,если есть кто понимает,буду благодарен за помощь

#SingleInstance Force
CoordMode, Mouse, Screen 
enabled := true
areaSelected := false
reverseX := ""
monitorNumber := 2  
offsetX := 900

; ===== Вкл/выкл — Alt+1 =====
!1::
    enabled := !enabled
    ToolTip % enabled ? "Зеркалирование: ВКЛ" : "Зеркалирование: ВЫКЛ"
    Sleep 700
    ToolTip
return

; ===== Выбор рабочей области на мониторе (F1) =====
F1::
    SysGet, monitorCount, MonitorCount
    if (monitorNumber > monitorCount || monitorNumber < 1)
    {
        MsgBox, Неверный номер монитора! Доступно только %monitorCount% мониторов.
        return
    }

    SysGet, MonLeft, MonitorWorkAreaLeft, %monitorNumber%
    SysGet, MonTop, MonitorWorkAreaTop, %monitorNumber%
    SysGet, MonRight, MonitorWorkAreaRight, %monitorNumber%
    SysGet, MonBottom, MonitorWorkAreaBottom, %monitorNumber%

    ToolTip Выберите область (клик+дрэг)
    Sleep 300
    MouseGetPos, x1, y1
    KeyWait, LButton, D
    KeyWait, LButton
    MouseGetPos, x2, y2

    areaX1 := Max(MonLeft, Min(x1, x2))
    areaY1 := Max(MonTop, Min(y1, y2))
    areaX2 := Min(MonRight, Max(x1, x2))
    areaY2 := Min(MonBottom, Max(y1, y2))
    areaSelected := true

    ToolTip % "Область выбрана:`nX1:" areaX1 " Y1:" areaY1 "`nX2:" areaX2 " Y2:" areaY2
    Sleep 1500
    ToolTip
return

; ===== Выбор X для реверсного клика (F2) =====
F2::
    ToolTip Выберите X для реверсного клика
    Sleep 300
    MouseGetPos, reverseX, yDummy
    ToolTip % "X реверсного клика: " reverseX
    Sleep 1500
    ToolTip
return

; ===== Левый клик — делаем правый реверс =====
~LButton::
    if (!enabled || !areaSelected || reverseX = "")
        return
    MouseGetPos, x, y
    if (x < areaX1 || x > areaX2 || y < areaY1 || y > areaY2)
        return

    hTarget := DllCall("WindowFromPoint", "int", x, "int", y, "Ptr")
    if (!hTarget)
        hTarget := WinExist("MetaScalp ahk_exe MetaScalp.exe")  ; Если окно не определено, ищем MetaScalp
    if (hTarget)
    {
        ; Переводим координаты в клиентскую область окна
        VarSetCapacity(pt, 8, 0)
        NumPut(x, pt, 0, "Int")
        NumPut(y, pt, 4, "Int")
        DllCall("ScreenToClient", "Ptr", hTarget, "Ptr", &pt)
        clientX := NumGet(pt, 0, "Int")
        clientY := NumGet(pt, 4, "Int")

        targetX := reverseX
        targetY := y

        VarSetCapacity(pt2, 8, 0)
        NumPut(targetX, pt2, 0, "Int")
        NumPut(targetY, pt2, 4, "Int")
        DllCall("ScreenToClient", "Ptr", hTarget, "Ptr", &pt2)
        newClientX := NumGet(pt2, 0, "Int")
        newClientY := NumGet(pt2, 4, "Int")

        ControlClick, x%newClientX% y%newClientY%, ahk_id %hTarget%, , Right, 1, NA
        Sleep 100
    }
return

; ===== Правый клик — делаем левый реверс =====
~RButton::
    if (!enabled || !areaSelected || reverseX = "")
        return
    MouseGetPos, x, y
    if (x < areaX1 || x > areaX2 || y < areaY1 || y > areaY2)
        return

    hTarget := DllCall("WindowFromPoint", "int", x, "int", y, "Ptr")
    if (!hTarget)
        hTarget := WinExist("MetaScalp ahk_exe MetaScalp.exe")  ; Если окно не определено, ищем MetaScalp
    if (hTarget)
    {
        VarSetCapacity(pt, 8, 0)
        NumPut(x, pt, 0, "Int")
        NumPut(y, pt, 4, "Int")
        DllCall("ScreenToClient", "Ptr", hTarget, "Ptr", &pt)
        clientX := NumGet(pt, 0, "Int")
        clientY := NumGet(pt, 4, "Int")

        targetX := reverseX
        targetY := y

        VarSetCapacity(pt2, 8, 0)
        NumPut(targetX, pt2, 0, "Int")
        NumPut(targetY, pt2, 4, "Int")
        DllCall("ScreenToClient", "Ptr", hTarget, "Ptr", &pt2)
        newClientX := NumGet(pt2, 0, "Int")
        newClientY := NumGet(pt2, 4, "Int")

        ControlClick, x%newClientX% y%newClientY%, ahk_id %hTarget%, , Left, 1, NA
        Sleep 100
    }
return

Ответы (0 шт):