我正在尝试创建一个脚本,该脚本允许用户通过按键盘快捷键来悬停鼠标来调整窗口的大小,而不必每次都将鼠标移到窗口的一角。
此功能目前可作为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
是否有更可靠的方法可以做到这一点?
答案 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, 1
,WinGetPos
和MouseGetPos
完成的工作。
我想您仍然会尝试使用菜单,因此,我的提示是至少等待确保菜单存在。您可以执行此操作以获取hwnd的ProcessID,然后等待,以便通过该PID的第一个找到的窗口发生更改,当新窗口出现时,我们可以理解。在代码中的含义是这样的:
WinMove
但是您需要一些更好的退出条件,以防菜单没有碰巧出现(超时?)而不会卡在那里。
在睡眠之后,仍然可能不足1。