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 键(现在移动鼠标会在各个方向调整窗口大小)

按下此序列后,您可以移动鼠标来调整活动窗口的大小,就像单击并拖动右上角一样,而无需寻找那个角落。 (要完成调整大小,您可以按 LeftMouseKeyEnter,或按 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】:

我无法使用您的方法重现该问题。也许尝试使用SendSendEventSendPlaySendRaw#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)

delphi 修改代码补全的快捷键(由Ctrl+Space 改为 Ctrl + alt + Space)

AHK按键转载

windows的终极自动化脚本——AHK

AHK AltTab 和 ShiftAltTab 不工作

在其重映射中发送组合键不起作用 AHK