随机图片

✨ 点击图片换一张(老婆/猫/狗/二次元) ✨

加载中...

ahk 窗口分屏

; 窗口分屏管理工具
; 禁用单实例运行,允许多开
#SingleInstance, Force
; 设置热键响应优先级
#InstallKeybdHook
#UseHook On

; 设置托盘菜单提示
Menu, Tray, Tip, 窗口分屏工具`n使用说明见菜单

; 添加托盘菜单说明
Menu, Tray, Add, 使用说明, ShowHelp
Menu, Tray, Add
Menu, Tray, Standard ; 添加标准菜单项

; 获取屏幕尺寸(考虑多显示器)
SysGet, ScreenWidth, 78
SysGet, ScreenHeight, 79
SysGet, MonitorCount, 80

; 定义边距(可调整)
margin := 5
halfMargin := margin // 2

; 计算各种分屏尺寸(考虑边距)
halfWidth := (ScreenWidth - margin * 3) // 2
halfHeight := (ScreenHeight - margin * 3) // 2
thirdWidth := (ScreenWidth - margin * 4) // 3
twoThirdsWidth := thirdWidth * 2 + margin

; 主热键配置(使用 Win+方向键,与Windows原生分屏类似但更强大)
#Left::        MoveWindow(0, 0, halfWidth, ScreenHeight)                     ; Win+左:左半屏
#Right::       MoveWindow(halfWidth + margin, 0, halfWidth, ScreenHeight)    ; Win+右:右半屏
#Up::          MoveWindow(0, 0, ScreenWidth, halfHeight)                     ; Win+上:上半屏
#Down::        MoveWindow(0, halfHeight + margin, ScreenWidth, halfHeight)   ; Win+下:下半屏

; 四分之一屏幕
#+Left::       MoveWindow(0, 0, halfWidth, halfHeight)                       ; Win+Shift+左:左上角
#+Right::      MoveWindow(halfWidth + margin, 0, halfWidth, halfHeight)      ; Win+Shift+右:右上角
#+Up::         MoveWindow(0, halfHeight + margin, halfWidth, halfHeight)     ; Win+Shift+上:左下角
#+Down::       MoveWindow(halfWidth + margin, halfHeight + margin, halfWidth, halfHeight) ; Win+Shift+下:右下角

; 三分之一屏幕
#1::           MoveWindow(0, 0, thirdWidth, ScreenHeight)                    ; Win+1:左1/3
#2::           MoveWindow(thirdWidth + margin, 0, thirdWidth, ScreenHeight)  ; Win+2:中1/3
#3::           MoveWindow(thirdWidth * 2 + margin * 2, 0, thirdWidth, ScreenHeight) ; Win+3:右1/3

; 三分之二屏幕
#+1::          MoveWindow(0, 0, twoThirdsWidth, ScreenHeight)                ; Win+Shift+1:左2/3
#+3::          MoveWindow(thirdWidth + margin, 0, twoThirdsWidth, ScreenHeight) ; Win+Shift+3:右2/3

; 居中显示(自定义大小)
#c::           CenterWindow(800, 600)                                        ; Win+C:居中(800x600)
#+c::          CenterWindow(1000, 700)                                       ; Win+Shift+C:居中(1000x700)

; 最大化/还原切换
#m::
    WinGet, isMaximized, MinMax, A
    if (isMaximized = 1)
        WinRestore, A
    else
        WinMaximize, A
return

; 移动到下一个显示器(多显示器支持)
#n::
    if (MonitorCount > 1) {
        WinGet, currentHWND, ID, A
        WinGetPos, winX, winY, winWidth, winHeight, A
        
        ; 简单实现:移动到右侧显示器
        newX := winX + ScreenWidth
        WinMove, A, , newX, winY, winWidth, winHeight
    }
return

; 显示帮助信息
#h::
ShowHelp:
    MsgBox, 64, 窗口分屏工具 - 使用说明,
    ( LTrim
    **窗口分屏热键说明:**

    ??? 基本分屏:
    Win + ←        左半屏
    Win + →        右半屏
    Win + ↑        上半屏
    Win + ↓        下半屏

    ??? 四分之一分屏:
    Win + Shift + ←    左上角
    Win + Shift + →    右上角
    Win + Shift + ↑    左下角
    Win + Shift + ↓    右下角

    ?? 三等分屏:
    Win + 1        左1/3屏
    Win + 2        中1/3屏
    Win + 3        右1/3屏

    Win + Shift + 1    左2/3屏
    Win + Shift + 3    右2/3屏

    ?? 其他功能:
    Win + C        居中显示(800x600)
    Win + Shift + C 居中显示(1000x700)
    Win + M        最大化/还原切换
    Win + N        移动到下一个显示器
    Win + H        显示此帮助

    ESC            退出程序

    注:所有分屏都自动保留5像素边距
    )
return

; 退出程序
Esc::
    MsgBox, 4, 退出确认, 确定要退出窗口分屏工具吗?
    IfMsgBox, Yes
        ExitApp
return

; 移动窗口到指定位置和大小的函数
MoveWindow(x, y, width, height) {
    WinGet, activeHwnd, ID, A
    WinMove, A, , x, y, width, height
    
    ; 添加动画效果(可选)
    ; DllCall("AnimateWindow", "UInt", activeHwnd, "Int", 150, "UInt", 0x40000)
}

; 居中显示窗口的函数
CenterWindow(width, height) {
    WinGetPos, , , winWidth, winHeight, A
    x := (A_ScreenWidth - width) // 2
    y := (A_ScreenHeight - height) // 2
    WinMove, A, , x, y, width, height
}

; 托盘图标双击显示帮助
TrayClick:
    if (A_ThisMenuItem = "使用说明")
        Gosub, ShowHelp
return
📅 最后更新:2026-04-17 00:00