我对窗口激活如何工作的理解非常简单。它会还原该类型的最近使用的窗口。该默认行为使对所需内容的编码变得非常简单。实际上,我用两个简单的代码块所做的事情几乎与您要做的事情相同。
+#w::
SetTitleMatchMode, 2 ; approximate match
IfWinExist, - Microsoft Word
{
WinActivate, - Micrsoft Word
}
IfWinNotExist, - Microsoft Word
{
Run FullFilePathToMicrosoftWord
}
return
我创建了一些有趣的协同作用以与多台显示器一起使用。请注意,在Windows 7上,按住Shift + Windows键并使用箭头向左和向右导航将以光速在监视器之间移动活动窗口。所以我尝试了一些巧妙的方法,将单词映射为shift + window + w。如果已经打开,它将恢复单词;否则,将运行一个新实例。该方法的优点在于,我从不放过shift + Windows键。这样,我既可以激活/开始单词,又可以使用左右箭头键将其精确移动到我想要的位置(顺便说一句,向上最大化,而向下则最小化)。映射+#r可以还原活动窗口,您可以完全控制通常不用鼠标即可轻松使用的所有窗口。您必须记住的只是您要激活的应用程序的首字母。
为了回答有关使脚本更通用的查询,请执行以下操作:
1)考虑使用
; Allows you to search for an approximate window title match
SetTitleMatchMode, 2
; For example, you could do the following to activate any existing window with
; "- Microsoft Word" as part of the title
WinWait, - Microsoft Word,
IfWinNotActive, - Microsoft Word, , WinActivate, - Microsoft Word,
WinWaitActive, - Microsoft Word,
; some other code here once you have the window active
或另一种可能性:
;Active the window by finding its ahk_class
WinWait, ahk_class OpusApp,
IfWinNotActive, ahk_class OpusApp, , WinActivate, ahk_class OpusApp,
WinWaitActive, ahk_class OpusApp,
注意:上面的代码仅是自动脚本编写器的通用输出的改编。它有些多余,但有效。要查找类似于窗口的ahk_class的内容,请考虑使用AutoIt3窗口间谍。
如果您需要发现窗口的标题,则可以获取活动标题,如ahk示例帮助文件中所示
WinGetActiveTitle, Title
MsgBox, The active window is "%Title%".
您可以使用的另一个技巧是使用WinSetTitle设置活动标题
编辑:鉴于您有多个excel / word / powerpoint实例,还可以考虑使用officetabs免费版解决该问题。例如,它将允许您将所有打开的excel文件保留在一个实例中,而不是将其分散在任务栏上。