Sto cercando di rilevare quando vengono lanciate particolari applicazioni.Mac OS X: Ottenere informazioni dettagliate sul processo (in particolare i suoi argomenti di avvio) per le applicazioni in esecuzione arbitrarie che utilizzano il PID
Attualmente sto usando NSWorkspace
, registrando la notifica "ha lanciato l'applicazione". Io uso anche il metodo runningApplications
per ottenere app attualmente in esecuzione all'avvio della mia app.
Per la maggior parte delle app, il nome del pacchetto di app è sufficiente. Ho un plist di "app conosciute" che controllo incrociando il nome di quello passato nella notifica.
Questo funziona bene finché non si incontra un'app che funge da proxy per l'avvio di un'altra applicazione utilizzando gli argomenti della riga di comando.
Esempio: il nuovo portale sul Mac non ha un pacchetto di app dedicato. Steam può creare un collegamento, che non serve altro che avviare l'app hl2_osx
con l'argomento -game
e portal
come parametro.
Dal momento che più giochi basati su Source si stanno dirigendo verso il Mac, immagino che useranno lo stesso metodo per lanciare, eseguendo efficacemente l'app hl2_osx
con l'argomento -game
.
C'è un modo carino per ottenere un elenco degli argomenti (e dei relativi parametri) utilizzando un'API Cocoa?
NSProcessInfo
si avvicina, offrendo un metodo `-arguments', ma fornisce solo informazioni per il proprio processo di ...
NSRunningApplication
offre la possibilità di ottenere informazioni sulle applicazioni arbitrarie utilizzando un PID, ma nessun argomenti della riga di comando ...
C'è qualcosa che colma il divario tra i due?
Sto provando a non seguire la rotta di generazione di uno NSTask
per eseguire ps -p [pid]
e analizzare l'output ... Preferirei qualcosa di più di alto livello.
I documenti dicono che NSApplication seguirà solo "Applicazioni utente" e non altri processi. Ho bisogno di indicare nell'interfaccia utente (system-preferences) quando il mio daemon è in esecuzione/non in esecuzione, e non so come ... Posso in qualche modo ottenere queste informazioni rudimentali usando una delle API Obj-C di livello più alto? Altrimenti, puoi risparmiare uno snippet sull'analisi dell'output di ps per quello? –