2014-03-27 59 views
1

我在计算机(OS X 10.9)上一次运行iTerm的两个实例。我复制的iTerm束并提出了以下的变化:使用Applescript有选择地激活一个应用程序的实例与两个正在运行的实例

  • 重命名束的iTerm copy.app>scratchpad.app
  • 重命名scratchpad.app/Contents/MacOS/iTerm>暂存器
  • Info.plist,设置CFBundleName>暂存器
  • Info.plist,设置CFBundleIdentifier>com.seanmackesey.scratchpad
  • Info.plist,设置CFBundleExecutable>暂存器

我能够运行两个实例successfully--在停靠栏和菜单栏,第二个实例根据需要标记为“便签簿”。但是,当我执行苹果脚本时:

tell application "iTerm" to activate 

这将导致我的便签簿激活。我该如何避免这种情况,以便该行只激活我的原始iTerm实例?

回答

1

尝试激活的应用[束] ID

tell application id "net.sourceforge.iTerm" to activate 

至于为什么你看到的情况: 有两个附加属性,你可能需要更改:

  • CFBundleDisplayName
  • CFDisplayName

为了得到一个应用程序的[包] ID,顺便说一句,干脆走(终端),例如:

osascript -e 'tell application "iTerm" to id' 
1

我喜欢什么mklement发布了有关使用应用程序ID。另一种方法是使用系统事件和进程。进程具有可帮助您识别特定运行进程的属性。例如,可以使用“显示名称”属性或“名称”或“短名称”或“标题”等。因此,您可以查看属性并挑选出与其相关的独特信息并进行识别。一旦你有特定的过程,你可以像这样把它带到前面。注意我在本例中使用“显示名称”属性来标识Safari。

tell application "System Events" 
    set theProcess to first application process whose displayed name is "Safari" 
    set frontmost of theProcess to true 
end tell 
相关问题