Anda perlu mengklarifikasi pertanyaan Anda. Skrip dalam jawaban saya berfungsi, untuk definisi tertentu dari 'karya' yaitu melaporkan secara akurat apakah Finder paling depan atau tidak.
Tetsujin
@Tetsujin diperbarui
William
Bagaimana Anda akan meluncurkan aplikasi Applescript? Mengklik dua kali tentu saja akan selalu menampilkan Finder sebagai bagian paling depan 'ke-2'. Mengubah jawaban - ini akan berfungsi jika dipanggil dari Script Editor, tetapi 'gagal' jika diklik dua kali pada Finder, karena memberikan false-positif
Tetsujin
Jawaban:
18
Ini akan berfungsi jika skrip dipanggil dari Script Editor, karena 'keluar dari jalan' untuk memeriksa aplikasi berikutnya sejalan, tetapi akan gagal jika diklik dua kali dari Finder, karena Finder akan selalu menjadi yang terakhir dalam barisan.
tell application "System Events"
set frontmostProcess to first process where it is frontmost
set visible of frontmostProcess to false
repeat while (frontmostProcess is frontmost)
delay 0.2
end repeat
set secondFrontmost to name of first process where it is frontmost
set frontmost of frontmostProcess to true
end tell
tell application (path to frontmost application as text)
if "Finder" is in secondFrontmost then
display dialog ("Finder was last in front")
else
display dialog (secondFrontmost & " was last in front")
end if
end tell
Meninggalkan jawaban sebelumnya di sini untuk anak cucu
Rejig seluruh jawaban setelah tidak membaca pertanyaan dengan benar pada awalnya ;-)
tell application "System Events"
set activeApp to name of first application process whose frontmost is true
if "Finder" is in activeApp then
display dialog ("test")
else
display dialog ("test2")
end if
end tell
+1 Meskipun solusi yang Anda usulkan tampaknya tidak berfungsi sebagaimana mestinya. Saya mendapatkan "tes" selama aplikasi tersebut terbuka dan tidak harus apakah itu aktif atau tidak.
William
a rethink… jawaban yang diedit
Tetsujin
lengkap menulis ulang, sekarang saya kembali ke desktop saya - ini sekarang melakukan persis apa yang Anda minta.
Tetsujin
2
Anda juga dapat mengganti perintah dialog kedua dengan display dialog (activeApp)untuk mengonfirmasi dengan tepat apa yang dianggap skrip sebagai yang paling depan.
Kent
1
Hati-hati dengan ini - beberapa nama aplikasi aplikasi (misalnya, tell application "app_name") berbeda dari nama prosesnya (misalnya, set frontmost of process "app_process" to true).
Jawaban:
Ini akan berfungsi jika skrip dipanggil dari Script Editor, karena 'keluar dari jalan' untuk memeriksa aplikasi berikutnya sejalan, tetapi akan gagal jika diklik dua kali dari Finder, karena Finder akan selalu menjadi yang terakhir dalam barisan.
Meninggalkan jawaban sebelumnya di sini untuk anak cucu
Rejig seluruh jawaban setelah tidak membaca pertanyaan dengan benar pada awalnya ;-)
sumber
display dialog (activeApp)
untuk mengonfirmasi dengan tepat apa yang dianggap skrip sebagai yang paling depan.tell application "app_name"
) berbeda dari nama prosesnya (misalnya,set frontmost of process "app_process" to true
).