1 votes

Comment afficher périodiquement un message d'alerte *au premier plan* ?

Je souhaite qu'une alerte / boîte de dialogue se déclenche périodiquement. au premier plan .

J'ai essayé une combinaison d'AppleScript et de launchd et j'ai réussi à faire en sorte que le script (en fait converti en une application) soit lancé périodiquement via launchd. Cependant, la boîte d'alerte ne s'affiche pas devant toutes les autres fenêtres (elle est plutôt totalement cachée jusqu'à ce que je tabule dessus - bien qu'elle fait commencer par launchd ). Comment puis-je le mettre en avant ?

Mon script est le suivant :

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

Mon launch.plist se trouve (dans /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>

1voto

Graham Miln Points 39606

Essayez d'utiliser open au lieu de lancer le programme directement. open correspond davantage à un double-clic pour lancer l'application AppleScript.

open votre candidature

Pour ce faire, remplacez le Program dans votre ticket de job launchd avec une paire clé/valeur ProgramArguments pour indiquer le chemin d'accès à votre application AppleScript :

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

Par défaut, le open tente de placer l'application lancée au premier plan.

0voto

Vic Points 1820

Votre code semble fonctionner correctement sur ma version 10.6.8 (Snow Leopard), bien que je ne l'ai pas lancé à partir de launchd .

J'ai fait quelque chose de très similaire pour surveiller ma batterie. Le script met automatiquement mon système en hibernation après un compte à rebours de 60s à l'aide d'une boîte de dialogue "clignotante".

Parce que, comme vous, la boîte de dialogue était parfois enterrée, j'ai donné à la boîte de dialogue un délai d'attente et je l'ai réaffichée.

Voici le code applescript de mon schéma bash script...

   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`"

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X