1

ユーザーがドックに配置したすべてのアプリケーションを一覧表示する方法がわかりません。

これは可能ですか?

4

2 に答える 2

2

これを試して。これは、ドックに常駐しているユーザーのアプリのリストです。私が基本的に行ったことは、システム イベントを使用して、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
于 2013-01-09T21:37:39.827 に答える
2

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
于 2013-09-07T02:52:02.353 に答える