Вы можете использовать AutoIt.
Вам не нужно иметь дело с этой конкретной высотой заголовка и шириной границы.Вместо этого попробуйте установить MouseCoordMode
в относительное положение клиента, переместите мышь в верхнее / левое положение и получите размер окна клиента.Это именно та область, в которую вы хотите, чтобы ваша мышь попала в ловушку.
Эти значения затем можно использовать в функции _MouseTrap
.Она должна быть похожа на вашу ClipCursor()
.
Старая позиция мыши может быть сохранена и восстановлена, но это не имеет смысла, так как ваша мышь в любом случае может быть перемещена в поле ловушки, поэтому я прокомментировал это.1010 *
#include <GuiConstantsEx.au3>
#include <Misc.au3>
Opt("MustDeclareVars", 1)
_Main()
Func _Main()
Local $GUI, $oldMouseCoordMode, $topLeft, $size ;,$oldMousePos
$GUI = GUICreate("Example MouseTrap", 392, 323)
GUISetBkColor( 0xff0000, $GUI)
GUISetState()
;~ $oldMousePos = MouseGetPos()
$oldMouseCoordMode = Opt("MouseCoordMode", 2)
MouseMove(0, 0, 0)
Opt("MouseCoordMode", 1)
$topLeft = MouseGetPos()
;~ MouseMove($oldMousePos[0], $oldMousePos[1], 0)
$size = WinGetClientSize($GUI)
Opt("MouseCoordMode", $oldMouseCoordMode)
_MouseTrap($topLeft[0], $topLeft[1], $topLeft[0] + $size[0], $topLeft[1] + $size[1])
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case Else
;;;
EndSwitch
WEnd
_MouseTrap()
Exit
EndFunc ;==>_Main