我在计算机上同时运行两个iTerm实例(OS X 10.9)。我复制了iTerm包并进行了以下更改:
Info.plist
中,设置 CFBundleName >的暂存器 Info.plist
中,设置 CFBundleIdentifier >的 com.seanmackesey.scratchpad Info.plist
中,设置 CFBundleExecutable >的暂存器 我能够成功运行这两个实例 - 在停靠栏和菜单栏中,第二个实例根据需要标记为“暂存”。但是,当我执行applescript时:
tell application "iTerm" to activate
这将导致我的暂存器激活。如何避免这种情况,以便此行只激活我原来的iTerm实例?
答案 0 :(得分:1)
尝试按应用[捆绑] ID 激活:
tell application id "net.sourceforge.iTerm" to activate
至于你所看到的为什么会发生: 您可能需要更改另外两个属性:
CFBundleDisplayName
CFDisplayName
顺便说一下,要获取应用程序的[bundle] ID,只需运行(在终端中),例如:
osascript -e 'tell application "iTerm" to id'
答案 1 :(得分: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