ユーザーがドックに配置したすべてのアプリケーションを一覧表示する方法がわかりません。
これは可能ですか?
これを試して。これは、ドックに常駐しているユーザーのアプリのリストです。私が基本的に行ったことは、システム イベントを使用して、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
regulus6633 による応答への追加示唆されているように、使用|bundle-identifier|
すると、このスクリプトでより信頼性の高い結果が得られます。たとえば、Evernote.app|file-label|
と EvernoteHelper.app の両方が同じ短い名前 ( CFBundleName
) を持っているため、Evernote はプロパティを使用してすべての AppleScript の使用を正しく識別しません。
追加のアイデアこのスクリプトを、ドックに永続的に配置されているすべてのアプリケーションを起動するスクリプトの基礎として使用しました (「ドックに保持」オプション)。DockAppsList 配列を削除し、2 番目のループを置き換えて、これらすべてのアプリケーションをアクティブにしました。画面全体にウィンドウが飛び散るのを避けるために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