Fast drag utility

Dragging a window is a task a PC user does all the time. This autohotkey script allows for faster dragging by offering the ability to omit the aim-at-the-title-bar part of the task.

Simply move the mouse pointer above the window (focused or not) hold down right mouse button while pressing the left mouse button, then drag the window to a new position. You can optionally release right mouse button after pressing down the left mouse button rather than holding it down the whole time.

I’ve been using this script for many years in a dual screen configuration pc and it is by far my favorite general PC usage productivity enhancer.

(This script is a variation of Easy Window Dragging example )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
; Variation of Easy Window Dragging (requires XP/2k/NT) from autohotkey examples.
; by Foivos Christoulakis

; Normally, a window can only be dragged by clicking on its title bar.
; This script extends that so that any window can be dragged from any point within it.
; To activate this mode, hold down right mouse button while pressing the left mouse button
; then drag the window to a new position.

; Note: You can optionally release right mouse button after
; pressing down the left mouse button rather than holding it down the whole time.
; This script requires v1.0.25+.


	; remapping of right button press to right button release in order to avoid registering
	; a right button press while trying to activate the easy drag mode of this script.
	RButton UP::Send {RButton}
	#If (NOT (GetKeyState("Shift", "P") ))  ; In this way, shift+ mouse right click works normally.
		RButton & LButton::
		CoordMode, Mouse  ; Switch to screen/absolute coordinates.
		MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin
		WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin%
		WinGet, EWD_WinState, MinMax, ahk_id %EWD_MouseWin% 
		if EWD_WinState = 0  ; Only if the window isn't maximized 
			SetTimer, EWD_WatchMouse, 10 ; Track the mouse as the user drags it.
		return

		EWD_WatchMouse:
		GetKeyState, EWD_LButtonState, LButton, P
		if EWD_LButtonState = U  ; Button has been released, so drag is complete.
		{
			SetTimer, EWD_WatchMouse, off
			return
		}
		GetKeyState, EWD_EscapeState, Escape, P
		if EWD_EscapeState = D  ; Escape has been pressed, so drag is cancelled.
		{
			SetTimer, EWD_WatchMouse, off
			WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY%
			return
		}
		; Otherwise, reposition the window to match the change in mouse coordinates
		; caused by the user having dragged the mouse:
		CoordMode, Mouse
		MouseGetPos, EWD_MouseX, EWD_MouseY
		WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin%
		SetWinDelay, -1   ; Makes the below move faster/smoother.
		WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY
		EWD_MouseStartX := EWD_MouseX  ; Update for the next timer-call to this subroutine.
		EWD_MouseStartY := EWD_MouseY
		return
	#If
	

source file v.2

binary 32bit

binary 64bit

Silo Emulator

a special purpose emulator circuit Continue reading

Arduino I/O Expander

Published on July 20, 2017

WoL++

Published on May 22, 2017