2016-08-18 14 views
0

Здравствуйте, я знаю, что я могу использовать что-то вроде Applescript контролировать различные аспекты операционных систем, как ввод данных с клавиатуры:Applescript в OS X (MacOS) и низкий уровень C (Objective-C альтернатива

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

или щелчков мыши :

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

и многие другие функции, такие как объем вверх/вниз, открыть/закрыть приложение, перейдите к URL в веб-браузере

Теперь рассмотрим, как я мог контролировать это без Applescript на OS X (MacOS). Я подумайте о некотором API низкого уровня, предпочтительно в C (в конечном счете в Objective-C), который мог бы делать подобные вещи. Меня интересует главным образом управление мышью/клавиатурой/пэдом (например, если я буду писать виртуальную клавиатуру), открывая приложения, вызывая ярлыки в приложениях. Я думаю, что я буду использовать Applescript в конце и выполнить его скрипты через C. Но я также заинтересован в более низкоуровневом программировании и библиотеках в C?

Каков наилучший способ выполнения таких скриптов Apple с других языков, таких как C? Я думаю, о чем-то вроде

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

Но, может быть, есть лучшие функции/библиотеки osascript("here cmd");

+0

Забудьте C для программирования на Mac; Любое интересное требует какао, поэтому используйте ObjC. OS X имеет мост событий Apple для ObjC, но это куча дерьма. Самый быстрый, простой и надежный способ - вызвать обработчики AppleScript непосредственно из ObjC через мост AppleScript-ObjC. Для прямого манипулирования графическим интерфейсом используйте API-интерфейсы доступности OS X, но избегайте автоматизации GUI, как чума, поскольку она смехотворно хрупкая и хрупкая с ужасной переносимостью. В зависимости от того, что вы делаете, вы можете найти существующее решение, такое как Hammerspoon, лучшим выбором. – foo

+0

Но я могу выполнить applescript из C как система() и т. Д. –

+0

Я думаю, Objective-C также можно вызывать из C? этот API-интерфейс Quartz Event Services https://developer.apple.com/library/mac/documentation/Carbon/Reference/QuartzEventServicesRef/#//apple_ref/c/func/CGEventCreateKeyboardEvent –

ответ

0

Как насчет перед отходом от AppleScript ДО C, я рекомендую сделать шаг на полпути с помощью «AppleScript Objective C «Программирование языка, простое, потому что вы, вероятно, хорошо разбираетесь в applescript, и вы также можете использовать гораздо больший диапазон кода от Objective C, ITS AppleScript в Objective C !! : D Вы можете сделать это в Xcode! надеюсь, что это может помочь немного :)