使用applescript将焦点设置到应用程序的特定窗口

akt*_*ivb 7 applescript

如何使用applescript将焦点设置到给定应用程序的特定窗口?

我在不同的显示器上运行了几个iTerm2窗口.我想使用applescript将焦点设置到指定的窗口.

我需要两件事,一个收集窗口ID的脚本并将它们打印到stdout.我有这个:

tell application "iTerm"
  set wins to id of every window
end tell
Run Code Online (Sandbox Code Playgroud)

它打印6个整数:3034,2528,-1,-1,-1,-1

奖金问题:四个-1是什么?

然后我尝试:

tell application "System Events"
  activate window 3034
end tell
Run Code Online (Sandbox Code Playgroud)

唯一发生的事情就是我失去了当前终端的焦点(我正在键入这些命令),无论我是指定3034还是2528作为ID.

Dig*_*uma 2

你几乎已经拥有了。您可以通过仅查看可见窗口来过滤掉“-1”窗口 ID:

tell application "iTerm 2"
  set wins to id of every window whose visible is true
end tell
Run Code Online (Sandbox Code Playgroud)

我通过查看以下结果发现了这一点:

tell application "iTerm 2" to properties of every window
Run Code Online (Sandbox Code Playgroud)

我注意到“-1”窗口具有以下属性visible:false

然后你可以直接将窗口 ID 告诉 iTerm 应用程序,而不是系统事件:

tell application "iTerm 2"
  activate window 13195
end tell
Run Code Online (Sandbox Code Playgroud)

  • 我希望这对我有用,但它只是激活给定应用程序的最后一个活动窗口。 (8认同)