Come mostrare periodicamente un messaggio di avviso * in primo piano *?

1

Voglio avere un avviso / finestra di dialogo per attivare periodicamente in foreground .

Ho provato una combinazione di AppleScript e launchd e sono riuscito a far scattare periodicamente lo script (effettivamente convertito in un'app) tramite launchd. Tuttavia, la finestra di avviso non viene visualizzata di fronte a tutte le altre finestre (piuttosto completamente nascosta finché non registro la scheda, anche se viene avviata tramite launchd ). Come posso averlo davanti?

Il mio script è il seguente:

on run
    activate me --> tried to get alert in foreground
                --> didn't help, though
    display alert "Should show up in foreground..."
end run

Il mio launch.plist è (in /Users/bernhard/Library/LaunchAgents/ ):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>bernhard.sitstraight.plist</string>

    <key>Program</key>
    <string>/Users/bernhard/programming/periodic.app/Contents/MacOS/applet</string>

    <key>RunAtLoad</key>  
    <true/>

    <key>StartInterval</key>
    <integer>1200</integer>
</dict>
</plist>
    
posta Bernhard Röttgers 22.05.2015 - 15:47
fonte

2 risposte

1

Prova a utilizzare open anziché a avviare il programma direttamente. open corrisponde più strettamente al doppio clic per avviare l'applicazione AppleScript.

open della tua applicazione

Per fare ciò, sostituisci la coppia di valori chiave Program nel tuo ticket di lavoro launchd con una matrice ProgramArguments per fornire il percorso alla tua applicazione AppleScript:

<key>ProgramArguments</key>
<array>
    <string>/usr/bin/open</string>
    <string>/Users/bernhard/programming/periodic.app</string>
</array>

Per impostazione predefinita, il comando open tenta di portare l'applicazione avviata in primo piano.

    
risposta data 25.05.2015 - 13:38
fonte
0

Il tuo codice sembra funzionare correttamente sul mio 10.6.8 (Snow Leopard), anche se non l'ho lanciato da launchd .

Ho fatto qualcosa di molto simile per monitorare la mia batteria. Lo script mette automaticamente in ibernazione il mio sistema dopo aver dato un conto alla rovescia degli anni '60 usando una finestra di dialogo 'lampeggiante'.

Perché, come te, la finestra di dialogo a volte si sgretola, ho dato alla finestra di dialogo un timeout e lo avrei rivisto.

Ecco il codice del codice a barre del codice pertinente dal mio script bash schell ...

   userResp="'/usr/bin/osascript 2>&1 <<-EOF
    tell application "System Events"
        activate
        display dialog \
            "Battery below min safe level of ${minBattLvl}%" \
            & "\n\nForcing hibernation in: ${cntDown} seconds." \
            as text buttons {"Cancel","$btntext"} \
            default button "$btntext" \
            with icon caution \
            with title "WARNING: Battery Monitor" \
            giving up after $dlgTimeout
    end tell
EOF'"
    
risposta data 24.05.2015 - 21:09
fonte

Leggi altre domande sui tag