【问题标题】:Set focus to specific window of an application using applescript使用applescript将焦点设置到应用程序的特定窗口
【发布时间】:2013-01-24 07:14:35
【问题描述】:

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

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

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

tell application "iTerm"
  set wins to id of every window
end tell

打印 6 个整数:3034、2528、-1、-1、-1、-1

额外问题:四个 -1 是什么?

那我试试:

tell application "System Events"
  activate window 3034
end tell

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

【问题讨论】:

  • 查看this question on Ask Different;如果你将perform action "AXRaise" of someWindowtell application "The Application" to activate 结合起来,你会得到你想要的。但需要注意的是(以及这不是答案的原因)是您似乎无法以这种方式通过窗口 ID 指定窗口(这是有道理的,好像我理解正确,窗口 ID 是特定于应用程序的)。额外的问题:-1 可能是诸如偏好/查找对话框之类的东西,它可能是可见的,也可能是不可见的。

标签: applescript


【解决方案1】:

你几乎拥有它。您可以通过只查看可见窗口来过滤掉“-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”窗口具有属性visible:false

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

tell application "iTerm 2"
  activate window 13195
end tell

【讨论】:

  • 我希望这对我有用,但它只是激活给定应用程序的最后一个活动窗口。
  • 多年后有什么消息吗? :)
猜你喜欢
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 2011-05-02
相关资源
最近更新 更多