AppleScript etkinleşiyor Uygulama


13

display dialog("test")AppleScript kullanarak kodu (örneğin ) yalnızca "Finder" Uygulaması şu anda odakta / etkinse nasıl çalıştırabilirim.


Uygulama zaten aktifse, tekrar aktive ederek neyi başarmayı amaçlıyorsunuz?
Kent

stackoverflow.com/questions/3718520/… rölanti, sorunu çözmese de önemlidir.
William

Sorunuzu netleştirmeniz gerekiyor. Cevabımdaki komut dosyası, belirli bir 'eserler' tanımı için çalışıyor, yani Finder'ın en önde olup olmadığını doğru bir şekilde rapor ediyor.
Tetsujin

@Tetsujin güncellendi
William

Applescript uygulamasını nasıl başlatacaksınız? Çift tıklamak, elbette, Finder'ı daima 'en son 2.' olarak gösterecektir. Cevabı değiştirme - bu, Script Editor'den çağrıldığında işe yarar, ancak yanlış pozitif verdiği için Finder'da çift tıklanırsa 'başarısız olur'
Tetsujin

Yanıtlar:


18

Komut dosyası Komut Dosyası Düzenleyicisi'nden çağrılırsa çalışır, çünkü sıradaki uygulamayı kontrol etmek için 'yoldan çıkar', ancak Finder'dan çift tıklanırsa Finder her zaman en son sırada olacağından başarısız olur.

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

Gelecek kuşak için burada bir önceki cevabı bırakmak

Soruyu başlangıçta düzgün okumadıktan sonra tüm cevabı reddetti ;-)

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 Her ne kadar önerilen çözümünüz olduğu gibi çalışmıyor. Uygulama açık olduğu ve aktif olup olmadığı şart değil "test" olsun.
William

a rethink… editör yanıtı
Tetsujin

tam yeniden yazma, şimdi masaüstüme geri döndüm - bu şimdi tam olarak sorduğunuz şeyi yapıyor.
Tetsujin

2
display dialog (activeApp)betiğin en önden ne düşündüğünü tam olarak doğrulamak için ikinci iletişim kutusu komutunu da değiştirebilirsiniz .
Kent

1
Buna dikkat edin - bazı uygulamaların uygulama adları (ör. tell application "app_name"), İşlem adlarından (ör set frontmost of process "app_process" to true.) Farklıdır .
BallpointBen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.