我有以下AutoHotKey脚本来帮助我使用快捷方式在不同的打开的应用程序之间切换:
^!c::ToggleWindow("Chrome")
^!p::ToggleWindow("PowerShell")
ToggleWindow(TheWindowTitle)
{
SetTitleMatchMode,2
DetectHiddenWindows, Off
IfWinActive, %TheWindowTitle%
{
WinMinimize, %TheWindowTitle%
}
Else
{
IfWinExist, %TheWindowTitle%
{
WinActivate
;;; Tried using WinMaximize/WinRestore here but same result
}
Else
{
DetectHiddenWindows, On
IfWinExist, %TheWindowTitle%
{
WinShow
WinActivate
}
}
}
}
问题在于,对于某些应用程序,它有时只能运行(例如,PowerShell和TortoiseHG Workbench),这真的令人沮丧。对于其他应用程序(Chrome,Thunderbird),它始终有效。
这是我到目前为止所发现的:
如果您明确地最小化“有问题”的应用程序,那么您永远不能使用AHK快捷方式激活/最大化窗口。我不确定是否还有其他方案可以阻止快捷方式的工作,但这是一种复制问题的方法(至少对我而言)。
即使在快捷方式不起作用的情况下,我也可以看到任务栏中的目标应用程序图标突出显示。我猜它有点中途,激活窗口但没有实际显示它。
我认为问题不仅限于AutoHotKey,因为我只能使用任务管理器复制此行为。如果我转到“应用程序”选项卡,右键单击目标应用程序并选择“置于最前面”,同样的事情发生。但是,如果我选择“切换到”,它就会起作用!
所以,我想我的问题是“任务管理器 - >应用程序 - >切换到”确实做了什么,是否有我可以在AHK中使用的等效物。我的操作系统是Win7。
答案 0 :(得分:1)
尝试在您的脚本中添加#WinActivateForce。
如果以普通用户身份运行AutoHotkey,则可能无法管理以管理员身份运行的程序(例如PowerShell)。如果是这种情况,请尝试以管理员身份运行AutoHotkey。
答案 1 :(得分:1)
如果您明确地最大限度地减少了问题"应用程序然后你永远不会 使用AHK快捷方式激活/最大化窗口。我不确定是否 还有其他方案可以防止快捷方式工作但是 这是复制问题的一种特定方式(至少对我而言)。
根据AutoHotkey's release notes,这是已知问题,已在AutoHotkey v1.1.20中修复。 (在问到这个问题后1个月发布)
1.1.20.00 - March 8, 2015
更改
- 更改了WinActivate以恢复窗口,如果已经激活但已最小化。
- 如果DetectHiddenWindows关闭并且隐藏了活动窗口,则更改WinActivate以查找可激活的可见窗口,而不是 什么都不做