Windows中Alt + Space的AHK快捷方式

时间:2019-03-06 20:15:11

标签: autohotkey

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

  1. 按Alt + Space键(调出窗口菜单)
  2. 按S键(选择“大小”以调整大小)
  3. 按向左键(现在移动鼠标将水平调整窗口大小)
  4. 按下向上键(现在移动鼠标可以在各个方向上调整窗口大小)

一旦按下此序列,您就可以移动鼠标来调整活动窗口的大小,就像单击拖动右上角一样,而不必寻找该角。 (要完成调整大小,可以按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 + Space菜单。

我最初使用Sleep 10并认为Sleep 100可以解决此问题,但事实并非如此。内置2倍Sleep 100时,该快捷方式已经感觉很慢。

我想测试SendInput s之前是否已打开Alt + Space菜单,并且最好确保我要发送到菜单而不是主应用程序。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

菜单本身是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的替代解决方案是一种更可靠的方式来完成您要实现的目标,但这将使您目前所拥有的一切正常。