我找到了以下脚本,用于动态地将热键分配给已打开的窗口:
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
(代码是从这个帖子http://www.autohotkey.com/forum/topic38773.html&highlight=dynamic+hot+key复制的)
使用上述脚本,您可以:
但是,如果我给一个给定的窗口分配一个热键(使用Win + Ctrl + 0..9),然后我想要回到那个窗口(Win + 0..9),窗口是重置为新的尺寸&位置。
是否有保存尺寸和方式的方法窗口的位置及其ID?
如果是这样,脚本会是什么样的?
我在Windows 7 64位上运行上述脚本。
非常感谢,
答案 0 :(得分:1)
你不需要使代码复杂化:)
快速提问:如果您的窗口最小化,您没有任何问题吗?
代码上的“问题”是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
我测试过它,效果很好。
答案 1 :(得分:0)
您可以使用WinGetPos读取实际位置并保存。然后,您可以使用WinMove设置位置。这是一个功能列表:http://www.autohotkey.com/docs/commands.htm。