Windows 中 Alt+Space 的 AHK 快捷键
Posted
技术标签:
【中文标题】Windows 中 Alt+Space 的 AHK 快捷键【英文标题】:AHK shortcuts for Alt+Space in Windows 【发布时间】:2019-07-28 14:43:12 【问题描述】:在 Windows 10 中运行 AHK,我正在尝试为 Alt+Space 菜单创建快捷方式。具体来说,我经常使用这个序列:
-
按 Alt+Space 键(调出窗口菜单)
按 S 键(选择大小以调整大小)
按下 Left 键(现在移动鼠标会水平调整窗口大小)
按 Up 键(现在移动鼠标会在各个方向调整窗口大小)
按下此序列后,您可以移动鼠标来调整活动窗口的大小,就像单击并拖动右上角一样,而无需寻找那个角落。 (要完成调整大小,您可以按 LeftMouseKey 的 Enter,或按 Esc 中止)。我想用一个快捷方式进入这个状态。
这是我当前的脚本,绑定到 Winkey+Ctrl+Shift+1
;resize window from Top-Left
#^+1::
SendInput !Space
Sleep 100
SendInput s
Sleep 100
SendInput Left+Up
Return
它主要工作,但有时活动窗口会使用s Left Up
命令,而不是弹出菜单。因此,有时此快捷方式会导致活动窗口(如 VSCode)具有“s”字符和光标 1 从之前对齐(就像键入 s Left Up
),以及可见的 Alt+空格菜单。
我最初使用 Sleep 10 并认为 Sleep 100 可以解决此问题,但事实并非如此。内置 2x Sleep 100 的快捷方式已经感觉很慢。
我想测试 Alt+Space 菜单是否在 SendInput s
之前打开,最好确保我发送到菜单而不是主菜单申请。
【问题讨论】:
如果窗口最大化,脚本不会按预期执行。先尝试最小化窗口。 【参考方案1】:我无法使用您的方法重现该问题。也许尝试使用Send
、SendEvent
、SendPlay
、SendRaw
、#InstallKeybdHook
、#UseHook
或者,使用 Autohotkey 的 WinMove
声明:
这会调整活动窗口的大小,使左上角位于当前鼠标位置
#^+1::
CoordMode Mouse, screen
id := WinExist("A")
WinGetPos x, y, width, height, ahk_id %id%
MouseGetPos mx, my
neww := width + x - mx
newh := height + y - my
WinMove % "ahk_id" id,, mx, my, neww, newh
return
【讨论】:
【参考方案2】:菜单本身是ahk_class #32768
,所以等待它存在似乎对我有用。
#^+1::
Send , !space
WinWait , ahk_class #32768 ,, 1 ; Waits 1s for menu to exist
If !ErrorLevel ; ErrorLevel is 0 if menu exists
Send , sleft+up
Return
Jim U's alternative solution 是一种更可靠的方式来实现您想要实现的目标,但这将使您目前拥有的东西发挥作用。
【讨论】:
感谢 Evan,WinWait 方法对于编写其他菜单的脚本非常方便。我选择了 Jim 对这个问题的回答,因为它是调整应用程序窗口大小的更可靠的方法。以上是关于Windows 中 Alt+Space 的 AHK 快捷键的主要内容,如果未能解决你的问题,请参考以下文章
delphi 修改代码补全的快捷键(由Ctrl+Space 改为 Ctrl + alt + Space)