2015-10-05 8 views
5

Sto sviluppando un'estensione FinderSync e ho alcuni problemi nel controllare se la selezione sta selezionando, o selezionando/deselezionando l'estensione.FinderSync verifica se l'estensione è selezionata

C'è un modo per controllare a livello di programmazione se è selezionata l'estensione FinderSync in System Preferences->Extensions?

Esistono API per ricevere notifiche quando questa selezione cambia?

Esistono API per selezionare/deselezionare un'estensione, oltre a utilizzare quanto segue?

system("pluginkit -e use -i com.mycompany.finderExt") 

Si noti che ho già visitato queste pagine:

How to enable FinderSync Extension in the System Preference in Cocoa - Objective C

OSX Finder Sync Extension

+0

Per quanto ne so, le risposte alle tue domande sono no, no e no. Sarei felice di essere smentito, comunque. – dejuknow

+0

Perché dovresti controllare se è selezionato? Perché non selezionarlo forzatamente ogni tanto? Perché il comando pluginkit ti dà fastidio? – Mugen

+0

Una delle funzioni che devo implementare è quella di avere una casella di controllo nella finestra di dialogo delle preferenze dell'app che l'utente è in grado di abilitare/disabilitare l'estensione Finder e che l'opzione dovrebbe essere sincronizzata con la selezione da Preferenze di Sistema-> Estensioni. Potrei farlo come hai detto tu, ma se l'utente vuole disabilitare la mia estensione da Preferenze di Sistema, non voglio sovrascrivere la sua azione. Inoltre, posso rendere le due caselle di controllo non sincronizzate abbastanza facilmente. Per ora visualizzo solo un pulsante e quando si fa clic, reindirizza l'utente al prefpane Extensions. – ciprian

risposta

7
pluginkit -m -A -i com.mycompany.finderExt 

Se l'estensione è attivata, la chiamata tornerà

"+ com.mycompany.finderE xt (1)"

Se l'interno non è abilitato, la chiamata tornerà

"- com.mycompany.finderExt (1)"

Avviso il segno più o meno, basta analizzare il ritorno per determinare se l'estensione è abilitata.

0

L'estensione FinderSync è una "applicazione", esattamente. ma il suo pacchetto è chiamato come .appex. quando si attiva in Preferenze di Sistema, MacOS lo caricherà automaticamente (è possibile controllare da app di attività o il comando ps -ef)

Così, si può facilmente controllare da un po 'di codice come:

runningApps = [[NSRunningApplication runningApplicationsWithBundleIdentifier:@"your.bundle.id"] retain]; 
if runningApps.count != 0{ 
    //your extension was enabled 
} 
else{ 
//your extension was not enabled 
}