将鼠标悬停在窗口上方,并使用自动快捷键将鼠标移至调整窗口大小

时间:2019-01-02 19:40:41

标签: resize window autohotkey window-resize

我正在尝试创建一个脚本,该脚本允许用户通过按键盘快捷键来悬停鼠标来调整窗口的大小,而不必每次都将鼠标移到窗口的一角。

此功能目前可作为BetterSnapTool的一部分用于Mac OS X,但我正在尝试使用AutoHotkey为Windows 10开发相同的功能

我为autohotkey开发了一个脚本,该脚本对于chrome和spotify除外的大多数应用程序都适用(请参见下文)。按下alt + space see video here

后,标题栏菜单经常会打开
^+x::
MouseGetPos,,, hwnd 
WinActivate, ahk_id %hwnd%
Send !{Space}
Sleep 1
Send m
sleep 1
send {down}
Return

是否有更可靠的方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

通过将鼠标移到最小化按钮旁边的窗口右上角,并在使用blockinput时将鼠标按钮保持向下,我能够可靠地解决此问题。

好处:

  • 这允许用户自由移动鼠标来移动窗口。
  • 它也可以调整大小。
  • 如果全屏捕捉窗口,则能够移动窗口。

提示:脚本必须以管理员身份运行才能使块输入正常工作...

;Move Window Mode
^+x::
KeyWait Shift
KeyWait Alt
BlockInput, On
MouseGetPos,,, hwnd 
WinActivate, ahk_id %hwnd%
WinGetPos, , , Width, Height, A
MouseMove, Width-186, 10
Click, down
Send {Shift Up}
Send {Ctrl Up}  
BlockInput, Off
Return

;Resize Window Mode
^+z::
KeyWait Shift
KeyWait Alt
BlockInput, On
MouseGetPos,,, hwnd 
WinActivate, ahk_id %hwnd%
WinGetPos, , , Width, Height, A
MouseMove, Width-3, Height-3
Click, down
Send {Shift Up}
Send {Ctrl Up}
BlockInput, Off
Return

答案 1 :(得分:0)

问题在于Max可能没有足够的时间使菜单出现在所有应用程序上。

最可靠的方法是完全避免使用菜单,但这是通过Sleep, 1WinGetPosMouseGetPos完成的工作。

我想您仍然会尝试使用菜单,因此,我的提示是至少等待确保菜单存在。您可以执行此操作以获取hwnd的ProcessID,然后等待,以便通过该PID的第一个找到的窗口发生更改,当新窗口出现时,我们可以理解。在代码中的含义是这样的:

WinMove

但是您需要一些更好的退出条件,以防菜单没有碰巧出现(超时?)而不会卡在那里。

在睡眠之后,仍然可能不足1。