Savoir si une application est lancée

fouffouf Membre
Savoir si une application donnée est lancée peut-être parfois utile. Malheureusement, il n'y a pas en Cocoa de methode permettant directement de savoir cela. Voila donc une extension de NSWorkspace afin de remedier a cela ...

Ce sont donc deux fichiers (le header et le .m) qui definissent une categorie de NSWorkspace. Il n'y a donc qu'a importer le header et d'appeler NSWorkspace comme on le ferait normalement.

Petit detail : la selection se fait par le nom de l'appli, mais il peut être préférable de le faire par le bundle identifier. Facile a changer ;)

[Fichier joint supprimé par l'administrateur]

Réponses

  • 02:53 modifié #2
    Attention car si ça marche bien avec un nom d'application tel iTunes ce n'est pas du tout le cas avec l'Address Book qui en Français donne "Carnet d'adresses"... La catégorie proposée ne tient pas compte des localisations ;)

    Je pense que c'est mieux d'utiliser le l'identifier de l'application. (clef: NSApplicationBundleIdentifier).
  • AliGatorAliGator Membre, Modérateur
    août 2006 modifié #3
    dans 1150049300:

    Savoir si une application donnée est lancée peut-être parfois utile. Malheureusement, il n'y a pas en Cocoa de methode permettant directement de savoir cela. Voila donc une extension de NSWorkspace afin de remedier a cela ...
    Ah bon ?

    Pourtant NSWorkspace permet de lister les applications lancées, non ?
    Je ne suis pas sur mon mac donc j'ai pas encore téléchargé ton bout de code voir si c'est ça que tu fais, mais avec un truc genre
    NSWorkspace * ws = [NSWorkspace sharedWorkspace];<br />NSArray * apps = [ws launchedApplications];
    
    qui renvoie un tableau avec toutes les applis lancés... Du coup on peut n'extraire que les BundleIdentifiers, puis regarder si celui qu'on cherche est dedans :
    apps = [[[NSWorkspace sharedWorkspace] launchedApplications] valueForKey:@&quot;NSApplicationBundleIdentifier&quot;];<br />BOOL isRunning = [apps containsObject: bundleIdent];
    
    Ca se fait vraiment en 2 lignes.

    Après je ne sais pas ce que tu as utilisé ? (mais ça vaut p'tet pas le coup de faire une catégorie pour 2 lignes ?)
Connectez-vous ou Inscrivez-vous pour répondre.