8
votes

Le moyen le plus rapide d'ouvrir de manière programmée préfabriquée?

AppleScript était trop lent, j'ai donc essayé Scriptingbridge pour ouvrir des préférences système.app et définir le volet en cours, qui est également trop lent. Y a-t-il un moyen plus rapide de le faire? correctement


2 commentaires

Avez-vous remarqué que les préférences du système.app est ennuyeusement lent à ouvrir, peu importe la manière dont elle est invoquée? Parce que j'ai remarqué cela.


Compte tenu de votre question précédente et celle-ci, vous voudrez peut-être consulter ceci: 0xced.blogspot.com/2008/02/...


4 Réponses :


5
votes

NO BREAIRER:

/Library/PreferencePanes/
~/Library/PreferencePanes/


0 commentaires

0
votes

Comment avez-vous utilisé exactement le pont de script?

J'ai essayé avec ce code et je pense qu'il fonctionne assez bien: xxx

voici une autre option juste pour le plaisir qui est le cacao, mais non documenté du tout (et ne fonctionne que avec des vitres de préférence système). Vous pouvez l'utiliser pour comparer des performances, mais ne l'utilisez pas dans le code de production. xxx


2 commentaires

J'ai exactement le même code de pont de script que vous (eh bien, moins le code d'exception) - j'ai pris le mien de l'échantillon Apple. La chose étrange est que si je double-cliquez sur le fichier de préfpane déjà dans le dossier PréférencesPanes, les préférences du système s'ouvrent et chargent instantanément le volet.


J'ai testé à l'aide d'un pont de script. Mais il s'est avéré qu'il est extrêmement lent.



5
votes

Utilisez Services de lancement ou Nsworkspace pour ouvrir le paquet préfabrané. C'est la version programmatique de la commande Open (1).


5 commentaires

En effet: [[NsworkSpace SharedWorkspace] OpenFile: @ "/ chemin / à / foo.prefpane"];


Je ne sais généralement pas cela, car vous devez déterminer où votre préfpane tiers a été installé. Hélas, utilisant des identificateurs de paquet avec l'appel Nsworkspace approprié ne semble pas fonctionner.


Il n'y a que deux endroits que cela pourrait être, et vous pouvez utiliser nssearchPathfordirectomiesSindomains pour regarder les deux.


Mise à jour de l'année 2013: le remplacement moderne de nssearchPath ... est - [nsfilemanager urlsfordirectory: Indomains:] , qui renvoie une gamme d'URL plutôt que d'un tableau de chaînes qui sont chemins.


@Notretibilité, ce n'est pas ce que je suggère. Sans doute, c'est mieux - cela devrait vraiment être sa propre réponse.



13
votes

Une méthode plus directe que d'utiliser le chemin du système de fichiers consiste à utiliser l'URL de la ressource appropriée pour le volet de préférence avec Nsworkspace comme indiqué: xxx

où le urlstring a été tiré dans une liste de certaines des chaînes d'URL possibles https://macosxautomation.com/system-prefs -Links.html


4 commentaires

Parfait! Une méthode bien meilleure que la réponse acceptée actuelle, notamment parce que cela vous permet d'ouvrir une section spécifique dans une vitre Pref. Je cherchais spécifiquement à l'avoir ouvert à la section d'accessibilité du volet de sécurité Pref. Votre réponse était donc particulièrement pertinente pour moi.


À la deuxième pensée, cette méthode n'est pas tout à fait parfaite, car cela ne fonctionne pas dans MacOS 10.9. Mais ce n'est pas la fin du monde de revenir sur les autres options et de l'utiliser pour 10h10 et plus tard.


Pour 10.10+, cela devrait être la réponse acceptée. Fonctionne parfaitement.


Je veux faire cela sur un bouton Appuyez sur une touche, mais mon application prend toujours la concentration après que les préférences du système sont lancées. Test sur MacOS 10.14.5