2016-08-18 3 views
0

Bonjour Je sais que je peux utiliser quelque chose comme AppleScript pour contrôler les différents aspects des systèmes d'exploitation comme les entrées clavier:AppleScript sous Mac OS X (Mac OS) et le faible niveau C (alternatif Objective-C

osascript -e 'tell application "System Events" to key code 45' 

ou clique souris :

osascript -e 'tell app "System Events" to click at {100,200}' 

et bien d'autres fonctionnalités comme le volume haut/bas, app ouvrir/fermer, aller à l'URL dans le navigateur Web

maintenant, je considère comment pourrais-je contrôler cela sans Applescript sur OS X (Mac OS). JE pensez à une API de bas niveau, de préférence en C (éventuellement en Objective-C) qui pourrait faire des choses similaires. Je m'intéresse principalement au contrôle du logiciel souris/clavier/pad (comme si je vais écrire un clavier virtuel), à l'ouverture d'applications, à l'invocation de raccourcis dans les applications. Je pense que je vais utiliser Applescript à la fin et exécuter ses scripts via C. Mais je suis également intéressé par plus de programmation de bas niveau et les bibliothèques en C?

Quelle est la meilleure façon d'exécuter de tels scripts Apple à partir d'autres langages comme C? Je pense à quelque chose comme

system(osascript -e 'tell application "System Events" to key code 45') 

Mais peut-être il y a de meilleures fonctions/bibliothèques comme osascript("here cmd");

+0

Oubliez C pour la programmation spécifique au Mac; tout ce qui est intéressant nécessite Cocoa, utilisez ObjC. OS X dispose d'un pont d'événements Apple pour ObjC, mais c'est un tas de conneries. Le moyen le plus rapide, le plus simple et le plus fiable consiste à appeler les gestionnaires AppleScript directement depuis ObjC via le pont AppleScript-ObjC. Pour une manipulation directe de l'interface graphique, utilisez les API Accessibility d'OS X, mais évitez l'automatisation de l'interface graphique comme la peste car elle est ridiculement fragile et fragile avec une portabilité abyssale. Selon ce que vous faites, vous pourriez trouver une solution existante comme Hammerspoon un meilleur choix. – foo

+0

Mais je peux exécuter applescript de C comme system() etc –

+0

Je pense que Objective-C est également appelable de C? cette API Quartz Event Services https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/#//apple_ref/c/func/CGEventCreateKeyboardEvent –

Répondre

0

Que diriez-vous, avant d'aller de AppleScript jusqu'à C, je recommande une étape à mi-chemin en utilisant le « AppleScript Objectif C "Langage de Programmation, C'est simple parce que vous êtes probablement bon à applescript et vous pouvez également utiliser une gamme beaucoup plus large de code depuis Objective C, ITS AppleScript en Objective C !! : D Vous pouvez le faire dans Xcode! J'espère que cela pourrait aider un peu :)