我无法弄清楚如何列出用户在停靠栏中放置的所有应用程序。
这可能吗?
答案 0 :(得分:2)
试试这个。这是一个人在Dock中持久存在的应用程序列表。我基本上做的是使用系统事件将plist文件读入pListItems变量中的applescript记录。然后我可以使用applescript技术来访问pListItems中的列表和记录。
com.apple.dock中有很多信息,所以你可以查看pListItems变量并通过它来完成你需要的任何东西。例如,您可能想要“| bundle-identifier |”而不是“| file-label |”。祝你好运。
set plistpath to (path to preferences folder as text) & "com.apple.dock.plist"
tell application "System Events"
set plistContents to contents of property list file plistpath
set pListItems to value of plistContents
end tell
set persistentAppsList to |persistent-apps| of pListItems
set dockAppsList to {}
repeat with thisRecord in persistentAppsList
set end of dockAppsList to |file-label| of |tile-data| of thisRecord
end repeat
return dockAppsList
答案 1 :(得分:2)
通过regulus6633添加响应根据建议,使用|bundle-identifier|
确实可以在此脚本中获得更可靠的结果。例如,由于Evernote.app和EvernoteHelper.app具有相同的短名称(|file-label|
),Evernote将无法使用CFBundleName
属性在所有AppleScript使用中正确识别。
其他想法我使用此脚本作为启动永久放置在Dock中的所有应用程序(“Keep in dock”选项)的基础。我删除了dockAppsList数组并替换了第二个循环来激活所有这些应用程序。为了避免窗户溅到我的屏幕上,我保持appName
并在激活应用程序后立即使用它来隐藏它们。
要调整,请使用以下内容替换end tell
语句后面的代码:
repeat with thisRecord in |persistent-apps| of pListItems
set appName to |file-label| of |tile-data| of thisRecord
set appID to |bundle-identifier| of |tile-data| of thisRecord
tell application id appID to activate
tell application "Finder" to set visible of process appName to false
end repeat