Вам не нужно усложнять код:)
Быстрый вопрос: если ваше окно свернуто, у вас нет проблем, верно?
«Проблема» в коде - 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
Я проверил, работает отлично.