2013-02-08 111 views
6

如何使用applescript将焦点设置为给定应用程序的特定窗口?使用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 

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

+2

查看[关于Ask Different的这个问题](http://apple.stackexchange.com/questions/39204/script-to-raise-a-single-window-to-the-front);如果你将'someWindow'的执行动作“AXRaise”与'tell application'结合起来使用,那么你就可以得到你想要的东西。但是警告(和这不是答案的原因)是,你似乎无法通过窗口ID这种方式指定窗口(这是有道理的,就像我理解正确,窗口ID是特定于应用程序的)。奖金问题:-1s可能是偏好/查找对话框,可能甚至可能不可见。 – 2013-02-09 04:37:45

回答

3

你几乎拥有它。您可以通过只看可见的窗口过滤掉“-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 
+4

我希望这对我有效,但它只是激活给定应用程序的最后一个活动窗口。 – 2016-11-01 04:06:02