Chase des applications actives sur Mac avec Python

Objective-C C'est difficile à retenir, donc je viens de le gratter, mais je l'ai écrit en utilisant Python (et PyObjC):

active_app_logger.py


from AppKit import *
from PyObjCTools import AppHelper

def main():
    nc = NSWorkspace.sharedWorkspace().notificationCenter()
    nc.addObserver_selector_name_object_(
        Observer.new(),
        "handle:",
        NSWorkspaceDidActivateApplicationNotification,
        None
    )
    AppHelper.runConsoleEventLoop(installInterrupt=True)

class Observer(NSObject):
    def handle_(self, noti):
        """Processus appelé lors du basculement de l'application active"""
        info = noti.userInfo().objectForKey_(NSWorkspaceApplicationKey)
        for n in ["bundleIdentifier", "localizedName", "bundleURL",
                  "executableURL", "launchDate"]:
            v = info.valueForKey_(n)
            print("%s (%s):\t%s" % (n, v.className(), v))
        print("--")

main()

Exécutez-le sur votre appareil et changez d'applications dans l'ordre de Google Chrome → iTerm:

$ python cocoa_active_window.py
bundleIdentifier (__NSCFString):        com.google.Chrome
localizedName (__NSCFString):   Google Chrome
bundleURL (NSURL):      file:///Applications/Google%20Chrome.app
executableURL (NSURL):  file:///Applications/Google%20Chrome.app/Contents/MacOS/Google%20Chrome
launchDate (__NSDate):  2015-01-02 05:09:26 +0000
--
bundleIdentifier (__NSCFString):        com.googlecode.iterm2
localizedName (NSTaggedPointerString):  iTerm
bundleURL (NSURL):      file:///Applications/iTerm.app
executableURL (NSURL):  file:///Applications/iTerm.app/Contents/MacOS/iTerm
launchDate (__NSTaggedDate):    2015-01-02 05:59:29 +0000
--

PyObjC doit être installé pour exécuter ce script:

$ sudo pip install pyobjc

L'environnement d'exploitation du script est:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.10.1
BuildVersion:   14B25
$ xcodebuild -version
Xcode 6.1.1
Build version 6A2008a
$ python --version
Python 2.7.6
$ pip show 'pyobjc' | grep Version
Version: 3.0.4

J'ai choisi PyObjC car il semblait avoir plus de matériaux que Ruby (RubyCocoa), auquel je suis un peu habitué, mais si ni Python ni PyObjC ne peuvent être facilement utilisés avec Objective-C, et je n'ai jamais créé d'application Mac OS X, je partirai docilement d'Objective-C. Cela aurait pu être plus facile à retenir. C'était difficile.

Il semble que vous deviez toucher NSAccessibility pour obtenir des informations sur la fenêtre active, alors abandonnez. «NSAccessibility» est-il une API avec une politique solide qui permet d'accéder aux informations critiques? De plus, je ne l'ai pas trouvé dans PyObjC, mais n'est-il pas lié?

Recommended Posts

Chase des applications actives sur Mac avec Python
python sur mac
Créer un environnement Python avec Anaconda sur Mac
Installez Python sur Mac
Installer Python 3 dans un environnement Mac
Installez Python 3.4 sur Mac
Essayez de travailler avec Mongo en Python sur Mac
Mettez Python 2.7.x dans pyenv sur Mac OSX 10.15.5
Installer pygame sur python3.4 sur Mac
Python3 + Django ~ Mac ~ avec Apache
Suivi automatique sur Twitter avec python et sélénium! (RPA)
Manipulation de python sur mac
Mettez à jour le python que vous aviez sur votre Mac à 3.7-> 3.8
Installez pandas 0.14 sur python3.4 [sur Mac]
Remarques sur l'installation de Python sur votre Mac
Je veux AWS Lambda avec Python sur Mac!
Utiliser OpenCV avec Python @Mac
Paramètres d'environnement d'apprentissage automatique basés sur Python3 sur Mac (coexistence avec Python2)
Construire un environnement Python sur Mac
Si Python sur Mac disparaît
flux tensoriel avec anaconda sur mac
Premiers pas avec les applications Web Python
Créer un environnement Python sur Mac (2017/4)
Mémo de construction de l'environnement Python sur Mac
Installez Python 3.7 Anaconda sur MAC, mais Python 2
Installer python3 sur Mac (El Capitan)
Construire un environnement pour python3.8 sur Mac
Notes sur l'utilisation de rstrip avec python.
Si l'installation de Python 3.5.0 échoue sur Mac
Étapes pour installer python3 sur Mac
Premiers pas avec Python 3.8 sous Windows
Installez python avec mac vs code
Appeler C / C ++ depuis Python sur Mac
[Memo] Tweet sur Twitter avec Python
Mettre à jour Mac Python de 2 à 3
Premiers pas avec le framework Python Django sur Mac OS X
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Erreur et solution lors de l'installation de python3 avec homebrew sur mac (catalina 10.15)
Installez lp_solve sur Mac OSX et appelez-le avec python.
Migrer les applications Django exécutées sur Python 2.7 vers Python 3.5
[Python] Création d'un environnement avec Anaconda [Mac]
Exécutez le servo avec Python sur ESP32 (Windows)
Présentation de MAMP + Python + SQL Alchemy (Mysql-Python) sur Mac
Carte des informations de location sur une carte avec python
[C] [python] Lire avec AquesTalk sous Linux
Remarques sur la réalisation de l'OCR japonais avec Python
Suivez le guide de style Python avec Atom (flake8)
Comment effacer Python 2.x sur Mac.
Si scipy est python 2.7.8, l'installation de pip trébuche
Remarques sur la construction de Python et pyenv sur Mac
Télécharger des fichiers sur le Web avec Python
Installation de PIL avec Python 3.x sur macOS
Travailler avec le GPS en Python pour Raspberry Pi 3
Mettre la liaison MeCab pour Python sur Windows, Mac et Linux avec pip
Envoyer et recevoir des données binaires via une communication série avec python3 (sur Mac)
Créez un environnement Python 3 avec pyenv sur Mac et affichez des graphiques Network X
Démarrer avec Python avec 100 coups sur le traitement du langage
Statistiques avec python
Stratégie sur la façon de monétiser avec Python Java
Créer un environnement python avec pyenv sur EC2 (ubuntu)