[AppleScript] Application apparait en premier plan

kollyv

Membre confirmé
17 Avril 2007
31
0
Bonjour,

J'utilise des applescripts pour contrôler iTunes depuis une application en objective-c. Je fais des requête toute les 3 secondes sur iTunes et à chaque fois que j'exécute le script, iTunes sors du doc et apparait au premier plan ce qui rend inutilisable le mac.

Bloc de code:
NSString * scriptDbEvent = @"try\n"
                "with timeout of 1 second\n"
    "  tell application \"iTunes\"\n"
    "          get count of every track of playlist 1 \n"
    "  end tell\n"
    "end timeout\n end try\n";
KKNSAppleScript * asDbEvent = [[KKNSAppleScript alloc] initWithSource: scriptDbEvent]; 
returnAS = [asDbEvent executeOnMainThreadReturningError:&errors];


Il faudrait pouvoir le laisser réduis dans le dock.

Qqu peut m'aider?

Merci d'avance
 
Ca serait faisable via un autre Thread ? J'ai un peu le même soucis avec un timer, qui me fait refresh ma GUI sans que je lui demande, j'ai de suite penser à lancer un thread parallele en tâche de fond, mais je n'ai pas encore essayé.

Si quelqu'un de compétent peut infirmer/confirmer.
 
tu as essayé

tell process "iTunes" au lieu de tell application "iTunes"?

Logiquement ça devrait garder ton iTunes réduit dans le dock puisque tu parle au processus dans la mémoire et non à l'interface de l'application.

Bonne chance
 
Pour être honnête je me suis trompé bêtement. Le tell application ne met pas l'application au premier plan.
Je recoit des informations d'une télécommande. En voulant faire un test pour pouvoir démarrer iTunes lors de n'importe quel réception, je le force au premier plan s'il est déjà lancé:

Bloc de code:
[[NSWorkspace sharedWorkspace] launchApplication:@"iTunes.app"];

Par contre, un aure soucis. Le tell application lance l'application si elle n'est pas démarré apparemment. J'ai un thread qui tourne relativement vite pour détecter la fin d'une chanson (enfin vite ca ca, toute les 0.2 secondes). Si l'utilisateur étein itunes, iTunes redémarre automatiquement :/ et malgrès le test dans l'applescript

Bloc de code:
KKNSAppleScript * asPP = [[KKNSAppleScript alloc] initWithSource: @"tell application \"System Events\"\n "
    "if exists process \"iTunes\" then\n"
    //  "try\n"
    "  tell application \"iTunes\"\n"
    "      if player state is playing or player state is paused then\n"
    "          get player position \n"
    "      end if\n"
    "  end tell\n"
                "end timeout\n" 
    //"end try\n"    
    "end if \n"            
    "end tell\n"];

J'ai laissé un peu le projet de coté, mais je vais faire le test avec un tell process

Merci