【问题标题】:How to drag window using right click down with AutoHotKey?如何使用 AutoHotKey 右键单击​​向下拖动窗口?
【发布时间】:2021-04-22 18:18:58
【问题描述】:

我想使用右键单击标题栏来拖动窗口,就像左键单击一样。使用 AutoHotkey 可以做到这一点吗?

背景:我使用戴尔显示管理器,它可以让我在预定义的网格中排列我的窗口。我可以直接拖动或 Shift+拖动来做到这一点。这两个选项都是次优的。直接拖动只会强制不需要的调整大小。 Shift 和 Drag 需要一个键和鼠标。我想知道我是否可以使用右键单击拖动。我使用名为 RBTray 的应用程序通过右键单击最小化到托盘。所以,我知道我们绝对可以添加类似的东西。我在 AutoHotkey 中寻找一些东西,因为它比 C++ 更容易编码。

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    这可能就是您要查找的内容:https://www.autohotkey.com/docs/scripts/index.htm#EasyWindowDrag

    下面是适配右键的代码:

    ~RButton::
    CoordMode, Mouse  ; Switch to screen/absolute coordinates.
    MouseGetPos, EWD_MouseStartX, EWD_MouseStartY, EWD_MouseWin
    WinGetPos, EWD_OriginalPosX, EWD_OriginalPosY,,, ahk_id %EWD_MouseWin%
    WinGet, EWD_WinState, MinMax, ahk_id %EWD_MouseWin% 
    if EWD_WinState = 0  ; Only if the window isn't maximized 
        SetTimer, EWD_WatchMouse, 0 ; Track the mouse as the user drags it.
    return
    
    EWD_WatchMouse:
    GetKeyState, EWD_LButtonState, RButton, P
    if EWD_LButtonState = U  ; Button has been released, so drag is complete.
    {
        SetTimer, EWD_WatchMouse, Off
        return
    }
    GetKeyState, EWD_EscapeState, Escape, P
    if EWD_EscapeState = D  ; Escape has been pressed, so drag is cancelled.
    {
        SetTimer, EWD_WatchMouse, Off
        WinMove, ahk_id %EWD_MouseWin%,, %EWD_OriginalPosX%, %EWD_OriginalPosY%
        return
    }
    ; Otherwise, reposition the window to match the change in mouse coordinates
    ; caused by the user having dragged the mouse:
    CoordMode, Mouse
    MouseGetPos, EWD_MouseX, EWD_MouseY
    WinGetPos, EWD_WinX, EWD_WinY,,, ahk_id %EWD_MouseWin%
    SetWinDelay, -1   ; Makes the below move faster/smoother.
    WinMove, ahk_id %EWD_MouseWin%,, EWD_WinX + EWD_MouseX - EWD_MouseStartX, EWD_WinY + EWD_MouseY - EWD_MouseStartY
    EWD_MouseStartX := EWD_MouseX  ; Update for the next timer-call to this subroutine.
    EWD_MouseStartY := EWD_MouseY
    return
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2019-11-05
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多