我有一个文件制作专家的特殊问题。 在Mac上安装了FMP11和FMP12。 我有一个脚本,它使FMP打开一个文档并进行一些处理。 该脚本到目前为止工作正常,但新的是我将FMP11和FMP12文档混合在一起。所以我必须打开适当的FMP来完成这项工作。 麻烦的是它们都在AppleScript应用程序列表中注册了相同的名称,所以如果我“告诉应用程序File Maker Pro Advanced”,它并没有严格定义我告诉的是哪一个。 我尝试通过退出所有FMP来解决问题,然后通过Finder打开FMP11或FM12虚拟文档,这将启动相应的FMP版本,但是当我想用activate切换到它时,或者我使用tell for first之后的时间,如果打开的那个是FMP11一切正常,如果FMP12打开,tell语句将打开FMP11。 最奇怪的是,在脚本的另一个简化版本中,它工作正常。
所以我的问题是:有没有其他方法可以将tell应用程序与应用程序的注册名称一起使用?
我试图获取FMP11和FMP12的属性,结果如下:
*的 FMP11
获取应用程序进程“FileMaker Pro”的属性 - > {enabled:缺失值,unix id:63125,file:别名“MACHD:Applications:FileMaker Pro 11 Advanced:FileMaker Pro Advanced.app:”,创建者类型:“FMP7”,subrole:缺失值,整个内容:{},选中:缺失值,应用程序文件:别名“MACHD:Applications:FileMaker Pro 11 Advanced:FileMaker Pro Advanced.app:”,orientation:缺失值,角色:“AXApplication”,接受高级别事件:true,文件类型:“APPL “,值:缺失值,位置:缺失值,ID:25741451,显示名称:”FileMaker Pro Advanced“,名称:”FileMaker Pro“,类:应用程序进程,仅后台:false,最前面:false,size:缺少值,visible:true,Classic:false,角色描述:“application”,最大值:缺失值,体系结构:“i386”,使用的分区空间:0,短名称:“FileMaker Pro高级“,重点:缺失值,最小值:缺失值,帮助:缺失值,标题:”FileMaker Pro Advanced“,接受远程事件:false,description:”application “,总分区大小:0,可访问性描述:缺失值,具有脚本术语:true,包标识符:”com.filemaker.client.advanced“}
FMP12
获取应用程序进程“FileMaker Pro”的属性 - > {enabled:缺失值,unix id:63199,file:别名“MACHD:应用程序:FileMaker Pro 12 Advanced:FileMaker Pro Advanced.app:”,创建者类型:“FM12”,subrole:缺失值,整个内容:{},选中:缺失值,应用程序文件:别名“MACHD:应用程序:FileMaker Pro 12高级:FileMaker Pro Advanced.app:”,方向:缺失值,角色:“AXApplication”,接受高级别事件:true,文件类型:“APPL “,值:缺失值,位置:缺失值,ID:25753742,显示名称:”FileMaker Pro Advanced“,名称:”FileMaker Pro“,类:应用程序进程,仅背景:false,最前面:false,大小:缺失值,visible:true,Classic:false,角色描述:“application”,最大值:缺失值,架构:“i386”,使用的分区空间:0,短名称:“FileMaker Pro Advanced”,重点:缺失值,最小值:缺少值,帮助:缺少值,标题:“FileMaker Pro Advanced”,接受远程事件:false,描述:“application”,总分区大小:0,可访问性描述n:缺少值,有脚本术语:true,包标识符:“com.filemaker.client.advanced12”} *
因此,Apple Script Editor的Dictionary中出现的字符串似乎是显示的名称,短名称或标题属性,但它们对于两个应用程序都是相同的。
那么我怎样才能打开并告诉相应的FMP版本,任何想法?
答案 0 :(得分:0)
尝试:
do shell script "open -b 'com.filemaker.client.advanced12'"
tell application (path to frontmost application as text)
properties
end tell
答案 1 :(得分:0)
将appName设置为当前应用程序的id为字符串
答案 2 :(得分:0)
将tell application id
表单与创建者代码或包ID一起使用。
例如,试试这个:
tell application id "FMP7"
activate
end tell