[NSWorkspace runningApplications]
Cela renvoie toutes les applications de l'utilisateur dans un NSArray
comme des instances de NSRunningApplication
qui a une propriété processIdentifier
.
Ou vous pouvez utiliser runningApplicationWithProcessIdentifier:
directement pour obtenir l'application avec un PID spécifié.
Voici l'exemple de code: http://developer.apple.com/library/Mac/#samplecode/AppList/Introduction/Intro.html
Grâce à la propriété activationPolicy
du NSRunningApplication
que vous pourriez obtenir l'état fenêtré. J'ai modifié le code AppList
pour qu'il affiche uniquement les applications fenêtrées comme indiqué ci-dessous. Cela correspond à ce que le moniteur d'activité montre.
En particulier, vous êtes à la recherche du NSApplicationActivationPolicyRegular
.
Notez les restrictions cependant. Cela ne fonctionne que pour les processus appartenant à l'utilisateur.
Toutes les autres méthodes sont obsolètes et risquent de ne plus fonctionner à l'avenir. Des méthodes telles que GetBSDProcessList
et Carbon GetProcessInformation
ne sont plus recommandées.
[Cette réponse] (http://stackoverflow.com/a/1888944/962089) explique un processus dans win32 brut dans lequel vous vérifiez chaque fenêtre en cours d'exécution pour voir si elle appartient au processus que vous voulez. Peut-être que cela aide? – chris
@chris Merci, mais je suis à la recherche d'une solution pour OSX en Objective-C ou C. – fdh
Pour une raison quelconque, malgré les nombreuses fois où vous avez dit OSX, il n'a jamais enregistré dans mon cerveau. Excuses. Peut-être qu'il existe une méthode similaire pour OSX. – chris