#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <Misc.au3>
Global $hWnd = 0
Global $isDragging = False
While True
; Проверяем, зажата ли левая кнопка мыши
If _IsPressed('01') and _IsPressed('12') Then
; Получаем текущее положение мыши
Local $mousePos = MouseGetPos()
If _IsMouseOnWindow($mousePos[0], $mousePos[1]) Then
; Если окно не выбрано, выбираем его
If $hWnd = 0 Then
$hWnd = WinGetHandle("")
; Запоминаем начальную позицию курсора
$startX = $mousePos[0]
$startY = $mousePos[1]
$winPos = WinGetPos($hWnd)
$offsetX = $startX - $winPos[0]
$offsetY = $startY - $winPos[1]
EndIf
$isDragging = True
EndIf
Else
; Отпускаем окно при отпускании левой кнопки
If $isDragging Then
$hWnd = 0
$isDragging = False
EndIf
EndIf
; Если мы в режиме перетаскивания
If $isDragging Then
; Получаем текущее положение мыши
$mousePos = MouseGetPos()
; Перемещаем окно
WinMove($hWnd, "", $mousePos[0] - $offsetX, $mousePos[1] - $offsetY)
EndIf
Sleep(5)
WEnd
Func _IsMouseOnWindow($x, $y)
; Создаем область определения для поиска окна под мышью
Local $hWndUnderMouse = WinGetHandle("")
Return ($hWndUnderMouse <> "")
EndFunc