我正在尝试开发一个应该执行以下操作的脚本。例如,!W应该:
我想为几个程序执行此操作:!WWord、!NNotepad++、!Xexcel、!Ppowerpoint、!FFirefox。
如果一个程序的多个实例正在运行,或者如果有多个选项卡可用,它应该对最近的实例或选项卡执行上述操作。因此,当 Firefox 的多个窗口打开时,它应该恢复(或将最近查看的窗口放在最近打开的选项卡上)。同样,如果打开了多个 Word 文档,它应该为我上次处理的文档执行此操作。而且,如果没有打开或最小化 Word 文档,它应该打开一个新的 Word 实例。
我可以为某些程序做一些这样的事情,但不能始终如一,也不能用一个热键(我仍在学习脚本语言)。我怎么能做到这一点?
Col*_*ter 15
我对 Window Activation 如何工作的理解非常简单。它恢复该类型的最近使用窗口。这种默认行为使编码您想要的非常简单。事实上,我用两个简单的代码块做了一些与您所追求的几乎相同的事情。
+#w::
SetTitleMatchMode, 2 ; approximate match
IfWinExist, - Microsoft Word
{
WinActivate, - Micrsoft Word
}
IfWinNotExist, - Microsoft Word
{
Run FullFilePathToMicrosoftWord
}
return
Run Code Online (Sandbox Code Playgroud)
我创造了一些有趣的协同作用来与多个显示器一起工作。请注意,在 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
Run Code Online (Sandbox Code Playgroud)
或者另一种可能:
;Active the window by finding its ahk_class
WinWait, ahk_class OpusApp,
IfWinNotActive, ahk_class OpusApp, , WinActivate, ahk_class OpusApp,
WinWaitActive, ahk_class OpusApp,
Run Code Online (Sandbox Code Playgroud)
注意:上面的代码只是对 autoscriptwriter 的通用输出的改编。这有点多余但有效。要查找类似于窗口的 ahk_class 的内容,请考虑使用 AutoIt3 窗口间谍。
如果您需要发现一个窗口的标题,您可以获得活动标题,如 ahk 示例帮助文件中所示
WinGetActiveTitle, Title
MsgBox, The active window is "%Title%".
Run Code Online (Sandbox Code Playgroud)
您可以使用的另一个技巧是使用 WinSetTitle 设置活动标题
编辑:鉴于您有多个 excel/word/powerpoint 实例,还可以考虑使用 officetabs 免费版解决该问题。例如,它将允许您将所有打开的 excel 文件保存在一个实例中,而不是散落在任务栏上。
| 归档时间: |
|
| 查看次数: |
19020 次 |
| 最近记录: |