AutoHotkey: el cálculo con las coordenadas del ratón no funciona.
Suponga que al hacer clic y mantenerlo presionado, quiero mostrar una caja de color que cubra el área entre el clic y la liberación del botón izquierdo del mouse. El siguiente script sencillo rastrea la posición del mouse al hacer clic y liberar si se mantiene presionada la tecla Ctrl
y muestra una sugerencia con el área cubierta. Mostrar la caja solo funciona si especifico un tamaño fijo para la caja:
Sin embargo, si intento calcular el tamaño de la caja (descomenta la última línea de código), la mayoría de las veces no se muestra ninguna caja?
Ctrl & LButton::
MouseGetPos, start<em>x, start</em>y
<pre><code>Keywait, LButton
MouseGetPos, end_x, end_y
; mostrar coordenadas para depuración
ToolTip % "dx: " . end_x-start_x . "`ndy: " . end_y-start_y
Gui, -Caption -Border +AlwaysOnTop
Gui, Color, red
; funciona con tamaño fijo ...
Gui, Show, % "x" start_x "y" start_y "w" 100 "h" 10
; ... pero lo siguiente no funciona
;Gui, Show, % "x" start_x "y" start_y "w" end_x-start_x "h" end_y-start_y
</code></pre>
davy.ai
Para mostrar un cuadro de color que cubre el área entre hacer clic y soltar el botón izquierdo del mouse, el script necesita calcular el tamaño del cuadro en función de la distancia entre las posiciones de inicio y fin del mouse. Sin embargo, descomentar la última línea de código que establece el ancho y alto del cuadro en función de la diferencia entre las posiciones de inicio y fin hace que el cuadro no se muestre la mayoría de las veces. Para solucionar esto, el comando
Gui, Show
debe estar envuelto en un bucle que espere a que la GUI se haya creado por completo antes de establecer su tamaño. Esto se puede hacer agregando la opción+LastFound
al comandoGui, Show
y usando un bucle que espere a que aparezca la ventana de la GUI:Este script modificado calcula el ancho y alto del cuadro en función de la diferencia entre las posiciones de inicio y fin del mouse, y utiliza un bucle para esperar a que se cree la ventana de la GUI antes de establecer su tamaño. Esto asegura que el cuadro se muestre siempre, independientemente de la distancia entre las posiciones de inicio y fin.