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

使用applescript将焦点设置为应用程序的特定窗口,applescript,Applescript,如何使用applescript将焦点设置到给定应用程序的特定窗口 我有几个iTerm2窗口在不同的显示器上运行。我想使用applescript将焦点设置为指定的窗口 我需要两件事,一个脚本收集窗口ID并将它们打印到标准输出。我有这个: tell application "iTerm" set wins to id of every window end tell 它输出6个整数:30342528,-1,-1,-1 奖金问题:什么是4-1 然后我尝试: tell application "S

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

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

我需要两件事,一个脚本收集窗口ID并将它们打印到标准输出。我有这个:

tell application "iTerm"
  set wins to id of every window
end tell
它输出6个整数:30342528,-1,-1,-1

奖金问题:什么是4-1

然后我尝试:

tell application "System Events"
  activate window 3034
end tell

唯一发生的事情是,我失去了当前终端的焦点(我正在其中键入这些命令),不管我是将3034还是2528指定为ID。

您几乎拥有了它。通过仅查看可见窗口,可以筛选出“-1”窗口ID:

tell application "iTerm 2"
  set wins to id of every window whose visible is true
end tell
我通过查看以下结果发现了这一点:

tell application "iTerm 2" to properties of every window
我注意到“-1”窗口的属性
可见:false

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

tell application "iTerm 2"
  activate window 13195
end tell

退房如果将某个窗口的
执行操作“AXRaise”与
告诉应用程序“应用程序”激活
,您将得到想要的。但需要注意的是(这不是答案的原因)您似乎无法通过窗口ID以这种方式指定窗口(这很有意义,因为我的理解是正确的,窗口ID是特定于应用程序的)。附加问题,-1可能是首选项/查找对话框之类的东西,它们可能是可见的,也可能不是可见的。我希望这对我有用,但它只会激活给定应用程序的最后一个活动窗口。