Windows 7 为窗口指定热键(并记住大小和位置)。啊

Windows 7 为窗口指定热键(并记住大小和位置)。啊,windows-7,keyboard-shortcuts,autohotkey,Windows 7,Keyboard Shortcuts,Autohotkey,我找到了以下脚本,用于为已打开的窗口动态分配热键: Code (Expand): Loop 10 { i := A_Index - 1 HotKey #^%i%,DynHotkey HotKey #%i%, DynHotkey HotKey #!%i%,DynHotkey } Exit DynHotkey: StringRight i, A_ThisHotKey, 1 StringMid what,A_ThisHotKey, 2, 1 var := v

我找到了以下脚本,用于为已打开的窗口动态分配热键:

Code (Expand):
Loop 10
{
   i := A_Index - 1
   HotKey #^%i%,DynHotkey
   HotKey #%i%, DynHotkey
   HotKey #!%i%,DynHotkey
}
Exit

DynHotkey:
   StringRight i, A_ThisHotKey, 1
   StringMid what,A_ThisHotKey, 2, 1
   var := var%i%
   IfEqual what, ^, WinGet var%i%, ID, A  ; Save ID
   Else IfEqual what,!, WinMinimizeAll    ; MinimizeAll
   WinRestore  ahk_id %var%
   WinActivate ahk_id %var%               ; Switch
Return
(代码是从此线程复制的)

使用上述脚本,您可以:

  • 使用Win+Ctrl+0..9将热键附加到当前活动窗口
  • 使用Win+0..9切换相应的编码窗口
  • 但是,如果我将热键指定给给定的窗口(使用Win+Ctrl+0..9),然后我想返回该窗口(Win+0..9),则该窗口将重置为新的大小和位置

    是否有方法将窗口的大小和位置与ID一起保存

    如果是,脚本会是什么样子

    我正在64位Windows 7上运行上述脚本


    非常感谢,

    您可以使用WinGetPos读取实际位置并保存它。然后可以使用WinMove设置位置。这是一个函数列表:。

    您不需要使代码复杂化:)

    快速提问:如果你的窗口最小化,你不会有任何问题,对吗? 代码上的“问题”是
    WinRestore

    问题是,如果窗口未最小化,然后执行
    WinRestore
    操作,它会将其大小和位置更改为“未最大化”版本

    WinActivate仅在最小化窗口时自动执行WinRestore,因此您可以安全地删除第16行(WinRestore),因为WinActivate将执行您需要的操作

    --编辑--

    代码应该是这样的:

    Loop 10
    {
        i := A_Index - 1
        HotKey #^%i%,DynHotkey
        HotKey #%i%, DynHotkey
        HotKey #!%i%,DynHotkey
    }
    Exit
    
    DynHotkey:
        StringRight i, A_ThisHotKey, 1
        StringMid what,A_ThisHotKey, 2, 1
        var := var%i%
        IfEqual what, ^, WinGet var%i%, ID, A  ; Save ID
        Else IfEqual what,!, WinMinimizeAll    ; MinimizeAll
        WinActivate ahk_id %var%               ; Switch
    Return
    
    我测试过了,效果很好