【问题标题】:AHK shortcuts for Alt+Space in WindowsWindows 中 Alt+Space 的 AHK 快捷键
【发布时间】:2019-07-28 14:43:12
【问题描述】:

在 Windows 10 中运行 AHK,我正在尝试为 Alt+Space 菜单创建快捷方式。具体来说,我经常使用这个序列:

  1. Alt+Space 键(调出窗口菜单)
  2. S 键(选择大小以调整大小)
  3. 按下 Left 键(现在移动鼠标会水平调整窗口大小)
  4. 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 之前打开,最好确保我发送到菜单而不是主菜单申请。

【问题讨论】:

  • 如果窗口最大化,脚本不会按预期执行。先尝试最小化窗口。

标签: autohotkey


【解决方案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 , s{left}+{up}
    Return
    

    Jim U's alternative solution 是一种更可靠的方式来实现您想要实现的目标,但这将使您目前拥有的东西发挥作用。

    【讨论】:

    • 感谢 Evan,WinWait 方法对于编写其他菜单的脚本非常方便。我选择了 Jim 对这个问题的回答,因为它是调整应用程序窗口大小的更可靠的方法。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2021-06-20
    相关资源
    最近更新 更多